我有一个 Lambda,它在文件上传到 S3-A 存储桶并将这些文件移动到另一个存储桶 S3-B 时运行。挑战在于我需要在 S3-B 存储桶中创建一个文件夹,其中包含相应的上传文件日期,并将文件移动到该文件夹中。非常感谢任何帮助或想法。这听起来可能令人困惑,所以请随时提问。谢谢!
最佳答案
这是一个可以由 Amazon S3 事件触发并将对象移动到另一个存储桶的 Lambda 函数:
import json
import urllib
from datetime import date
import boto3
DEST_BUCKET = 'bucket-b'
def lambda_handler(event, context):
s3_client = boto3.client('s3')
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'])
dest_key = str(date.today()) + '/' + key
s3_client.copy_object(
Bucket=DEST_BUCKET,
Key=dest_key,
CopySource=f'{bucket}/{key}'
)
唯一需要考虑的是时区。 Lambda 函数以 UTC 运行,您可能希望时区中的日期略有不同,因此您可能需要相应地调整时间。
关于amazon-web-services - AWS Lambda 在 S3 存储桶中创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63745424/