amazon-web-services - AWS Lambda 在 S3 存储桶中创建文件夹

标签 amazon-web-services amazon-s3 aws-lambda

我有一个 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/

相关文章:

amazon-web-services - 将对象放入另一个帐户的 S3 存储桶中

amazon-web-services - Pyspark AWS凭证

node.js - 为什么我无法使用 Lambda 函数将文件上传到 s3?

python - AWS Glue 转换

amazon-web-services - 无法在 SQS FIFO 上触发 lambda

amazon-ec2 - AWS基本问题

amazon-web-services - 通过tableplus连接到RDS eb2?

amazon-web-services - AWS CLI : aws s3 presign does not work for ap-east-1 (Hong Kong) region ("location constraint is incompatible for the region specific endpoint")

amazon-web-services - 使用 Winston 日志记录的 AWS Lambda 丢失请求 ID

amazon-web-services - AWS lambda : Accessing request headers and body of different content types?