如何通过 AWS Lambda 函数复制到达 Amazon S3 的对象

问题描述

我想将几个前缀复制到另一个存储桶中。

我不想使用同步和复制服务。我只想使用 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}
    )