2017-01-24 5 views
3

매일 데이터를 빙하로 이동시키는 생명주기 규칙과 함께 S3 버킷에 저장된 날짜를 복구하는 스크립트를 테스트하고 있습니다. 그래서 이론적으로 S3 버킷에 파일을 업로드하면 아마존 인프라 스트럭처에서 하루 만 지나면 그것을 빙하로 이동해야합니다.S3 빙하로의 버킷 요청시 boto3 API에서 가능합니까?

그러나 저는 복원 프로세스를 테스트하기 위해 Python으로 개발중인 스크립트를 테스트하고 싶습니다. 그래서, 내가 boto3 API를 이해한다면 S3 버킷에 저장된 파일을 강제로 이동 시켜서 빙하 저장소로 바로 이동하는 방법을 보지 못했습니다. 이를 수행 할 수 있습니까 아니면 Amazon 인프라가 수명주기 규칙을 실행할 때까지 대기해야합니다 ( ).

bucket = s3.Bucket(TARGET_BUCKET) 
for obj in bucket.objects.filter(Bucket=TARGET_BUCKET, Prefix=TARGET_KEYS + KEY_SEPARATOR): 
    obj.move_to_glacier() 

을하지만 수요에 빙하이 움직임을 어떤 API를 찾을 수 없습니다 :

I는 다음과 같이 몇 가지 코드를 사용하고 싶습니다. 또한, 나는 양동이 라이프 사이클 규칙

답변

3

이것은 불가능합니다. S3 개체를 GLACIER 저장소 클래스로 마이그레이션하는 유일한 방법은 수명주기 정책입니다.

x-amz-storage-class

제약 : 당신은 스토리지 클래스로 GLACIER를 지정할 수 없습니다. 개체를 GLACIER 저장소 클래스로 전환하려면 수명주기 구성을 사용할 수 있습니다.

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html

나머지 API

는 SDK를, 콘솔 및 AWS-CLI 모두가 사용하는 인터페이스입니다.


참고 ... 작은 물체로 테스트하지만 프로덕션 환경에서는 작은 물체를 빙하에 보관하지 마십시오. S3는 90 일 전에 개체를 삭제하더라도 최소 90 일 동안 빙하 저장 공간에 대해 요금을 청구합니다. (이 청구는 문서화되어 있습니다.)

0

Glacierupload_archive() 방법을 사용하여 빙하 S3에서 파일을 업로드 할 수 있습니다를 사용하여 필요에 따라이를 강제 할 수있는 경우하지 알 수 있습니까.

업데이트 : 이것은 S3 객체 수명주기 관리와 같지 않지만 Glacier에 직접 업로드합니다.

glacier_client = boto3.client('glacier') 

bucket = s3.Bucket(TARGET_BUCKET) 

for obj in bucket.objects.filter(Prefix=TARGET_KEYS + KEY_SEPARATOR): 
    archive_id = glacier_client.upload_archive(vaultName='TARGET_VAULT',body=obj.get()['Body'].read()) 
    print obj.key, archive_id 

.filter()

Bucket 키워드 인수를 허용하지 않습니다.

+1

OP가 원하는 것은하지 않을 것입니다. 'GLACIER' 스토리지 클래스의 S3 오브젝트는 Glacier 볼트의 아카이브와 근본적으로 다릅니다. 필자는 최근 관련없는 질문에 [차이점] (http://stackoverflow.com/a/41828828/1695906)을 설명했습니다. –

+0

동의합니다. AWS가 S3 obj lifecycle을 통해 수행하는 작업과 동일하지 않습니다. 이 방법은 필요할 때 (빙하로 직접 업로드하는 것과 같이) 아카이브를 빙하 금고로 업로드하는 작업 만 수행합니다. – franklinsijo