다음과 같은 경우에 python boto3 AWS lambda 함수를 사용하여 한 s3 버킷에서 다른 s3 버킷으로 1 시간 이상 오래된 파일을 이동하려고합니다.
@John Rotenstein이 언급 한 파이썬 코드를 사용하여 파일을 이동하는 데 도움을 받았습니다.
import boto3
from datetime import datetime, timedelta
SOURCE_BUCKET = 'bucket-a'
DESTINATION_BUCKET = 'bucket-b'
s3_client = boto3.client('s3')
# Create a reusable Paginator
paginator = s3_client.get_paginator('list_objects_v2')
# Create a PageIterator from the Paginator
page_iterator = paginator.paginate(Bucket=SOURCE_BUCKET)
# Loop through each object, looking for ones older than a given time period
for page in page_iterator:
for object in page['Contents']:
if object['LastModified'] < datetime.now().astimezone() - timedelta(hours=1): # <-- Change time period here
print(f"Moving {object['Key']}")
# Copy object
s3_client.copy_object(
Bucket=DESTINATION_BUCKET,
Key=object['Key'],
CopySource={'Bucket':SOURCE_BUCKET, 'Key':object['Key']}
)
# Delete original object
s3_client.delete_object(Bucket=SOURCE_BUCKET, Key=object['Key'])
요구 사항을 충족하기 위해 어떻게 수정할 수 있습니까?
다른 방법은 버킷 콘텐츠를 복제 할 수있는 Amazon S3 Replication 을 사용하는 것입니다 .
복제는 조직이 다른 지역에있는 데이터의 또 다른 복사본이 필요할 때 또는 단순히 백업 목적으로 자주 사용됩니다. 예를 들어 중요한 회사 정보는 일반 사용자가 액세스 할 수없는 다른 AWS 계정으로 복제 될 수 있습니다. 이렇게하면 일부 데이터가 삭제 된 경우 다른 곳에 또 다른 복사본이 있습니다.
복제하려면 소스 및 대상 버킷 모두에서 버전 관리를 활성화해야합니다. 암호화가 필요한 경우 표준 Amazon S3 암호화 옵션을 사용하십시오 . 데이터는 전송 중에도 암호화됩니다.
소스 버킷과 대상 버킷을 구성한 다음 접두사 또는 태그를 제공하여 복제 할 객체를 지정합니다. 개체는 복제가 활성화 된 후에 만 복제됩니다. 기존 개체는 복사 되지 않습니다 . 삭제는 악의적 인 행동을 피하기 위해 의도적으로 복제 되지 않습니다 . 참조 : Amazon S3는 무엇을 복제합니까?
S3 복제에 대한 "추가"비용은 없지만, 리전간에 객체를 이동할 때 데이터 전송 요금과 API 요청 (소액 요금) 및 스토리지에 대한 요금은 여전히 부과됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다