因此,我正在編寫一個由 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 中?
添加回答
舉報
0/150
提交
取消