2013-05-23 2 views
1

Boto를 사용하여 S3에 키를 설정하면 나중에 실수로 덮어 쓰지 않으려면 어떻게해야합니까? 결국 같은 키에 다시 쓰려고하면 읽기 전용으로 만들거나 적어도 어떤 종류의 오류를 줄 수있는 방법이 있습니까?S3의 파일을 Boto으로 읽기 전용으로 설정

ACL과 키와 버킷 모두 변경해 보았습니다. 아무런 변화가 없었습니다.

DragonDisk를 사용하여 권한을 제거하면 (따라서 <Policy: roddds (owner) = READ, roddds (owner) = READ_ACP>이됩니다), keyfile.set_contents_from_string()을 실행하면 모든 권한으로 다시 변경됩니다.

소유자로 버킷에 액세스 중입니다. S3 ACL Overview를 참조하십시오 가장 제한적인 ACL private도 함께

답변

1

bucket 또는 object의 소유자는 항상, FULL_CONTROL이있을 것이다. 그러한 경우가 아니라면 소유자는 자신이 읽기 전용으로 설정 한 객체를 어떻게 삭제할 수 있습니까? 키가 S3에 쓰기 전에 존재하는 경우

점검 :

from boto.s3.connection import S3Connection 
from boto.s3.key import Key 

conn = S3Connection(ACCESS_KEY, SECRET_ACCESS_KEY) 
bucket = conn.get_bucket(MY_BUCKET_NAME) 
key = Key(bucket, MY_KEY_NAME) 

if not bucket.get_key(key.name): 
    key.set_contents_from_string("foo") 

또는, 당신은 당신의 버킷 READ 액세스하여 BOTO 프로그램에 대해 다른 AWS 사용자를 설정하는 시도 할 수 있습니다. 그런 다음 소유자 자격 증명을 사용하여 키를 만들 때 ACL을 authenticated-read으로 설정합니다.

0

소유자에게 가져갈 수없는 액세스 권한이 있습니다. 그러나 자신을 보호하기 위해 할 수있는 일이 있습니다.

먼저 버킷에서 버전 관리를 사용하도록 설정합니다. 그런 다음 객체를 삭제하더라도 versionId 객체를 명시 적으로 삭제하지 않으면 실제로 삭제되지 않습니다. 여전히 이전 버전을 찾아 복원 할 수 있습니다. 버킷 버전 관리에 대한 자세한 정보는 here

입니다. 둘째, 실수로 삭제하지 않으려는 S3 객체가있는 경우 MFA 삭제 기능을 확인하십시오. 이것은 버전 버킷에서 사용할 수있는 기능입니다. 활성화 된 개체를 삭제하려면 MFA 장치에서 실제로 토큰을 제공해야합니다. 자세한 내용은 this을 참조하십시오.

관련 문제