问题描述
我想将几个前缀复制到另一个存储桶中。
我不想使用同步和复制服务。我只想使用 lambda 执行此操作,并且我正在运行持续迁移,因此数据每 20 分钟传入一次,无需转换。
有人可以帮助我如何使用 AWS Lambda 进行同步和复制吗?
解决方法
您可以为 AWS Lambda 函数配置触发器,以便在将对象添加到 Amazon S3 存储桶时调用它。该函数将接收有关触发该函数的对象的信息,包括其 Bucket 和 Key。
您应该编写 Lambda 函数以调用 CopyObject()
以将该对象复制到所需的目标存储桶。这是 Python 中的一个示例:
import boto3
import urllib
def lambda_handler(event,context):
TARGET_BUCKET = 'my-target-bucket'
# Get the bucket and object key from the Event
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'])
# Copy object
s3_client = boto3.client('s3')
s3_client.copy_object(
Bucket = TARGET_BUCKET,Key = key,CopySource= {'Bucket': bucket,'Key': key}
)