为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Lambda/Python 将多个文件上传到 S3

使用 Lambda/Python 将多个文件上传到 S3

holdtom 2023-10-11 19:58:48
因此,我正在编写一个由 DynamoDB Streams 中的事件触发的 Lambda 函数,并且我想将这些事件写入 S3(以创建数据湖)。但此代码仅上传相同的 json 文件。如何将多个文件上传到 s3 而不覆盖这个文件?   import boto3   import json      s3 = boto3.client('s3')      def lambda_handler(event, context):            bucket ='bto-history'     dynamodb = boto3.resource('dynamodb')     tableUsers = dynamodb.Table('Users')            jsonToUpload = event['Records']        uploadFile = bytes(json.dumps(jsonToUpload).encode('UTF-8'))          jsonToUpload = "userUpdate" + ".json"        s3.put_object(Bucket=bucket, Key=jsonToUpload, Body=uploadFile)             return {       'statusCode': 200,       'body': event       }
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您没有说,但我猜测您正在编写一个由 DynamoDB Streams 中的事件触发的 Lambda 函数,并且您希望将这些事件写入 S3。

如果您想在 S3 中维护多个文件/对象,那么您需要为它们提供唯一的密钥。写入 userUpdate.json 将简单地使用该密钥覆盖任何现有对象(除非您启用了版本控制,我认为您没有启用版本控制)。

因此,每次都创建一个唯一的对象键。您可以插入以毫秒(或其他)为单位的时间戳,这可能是唯一的。或者您可以插入 UUID。

值得一问:为什么要将 DynamoDB Streams 事件存储在 S3 中?


查看完整回答
反对 回复 2023-10-11
?
湖上湖

TA贡献2003条经验 获得超2个赞

event['Records']是一个需要迭代的列表。

每个条目都包含有关 dynamodb 事件的信息。


查看完整回答
反对 回复 2023-10-11
  • 2 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信