我為另一個賬戶中的一個桶啟用了S3復制功能。有什么方法可以讓我在源桶的物件被復制到目標桶后將其洗掉?
我似乎沒有找到一個簡單的方法來做到這一點。
uj5u.com熱心網友回復:
看來你的實際目標是將物件從一個桶 "移動 "到另一個桶。
這可以通過一個AWS Lambda 函式來實作,該函式在源桶中創建新物件時由 Amazon S3 觸發。然后,Lambda 函式應該:
- 將物件復制到目標桶中
- 洗掉物件。
- 從源桶中洗掉物件 。
這就避免了配置 S3 復制的需要。
重要提示:當將一個物件復制到由不同的 AWS 帳戶所擁有的桶時,請確保使用 ACL=bucket-owner-full-control,以便在復制操作之后,目標帳戶 "擁有 "該物件。
代碼將是這樣的:
import BOTO3
import urllib
DESTINATION_BUCKET = 'bucket2'
def lambda_handler(event, context)。
s3_client = boto3.client('s3'/span>)
# Get the bucket and object key from the Event.
for record in event['Records'] 。
source_bucket = record['s3']['bucket']['name']
key = urllib.parse.unquote_plus(record['s3']['object']['key'] )
# 復制物件。
s3_client.copy_object(
Bucket = DESTINATION_BUCKET,
key = key,
CopySource= {'Bucket': source_bucket, 'Key': key},
ACL = 'bucket-owner-full-control' # 洗掉源物件
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/319182.html
標籤:
上一篇:要么會話在作業中過期,要么警告:session_cache_expire()。當會話處于活動狀態時,不能改變會話快取的到期時間
