gpt4 book ai didi

amazon-web-services - S3 put()事件lambda触发器中可以包含多少条记录?

转载 作者:行者123 更新时间:2023-12-03 13:31:13 24 4
gpt4 key购买 nike

我需要一些lambda函数来实现以下流程:

Triggered S3 put file event -> lambda function -> insert row to DynamoDB



在lambda屏幕上使用AWS创建测试时,在 Records列表中只有1条记录的示例如下:
{
"Records": [ // <<<----------------only 1 element
{
"eventVersion": "2.0",
"eventTime": "1970-01-01T00:00:00.000Z",
"requestParameters": {
"sourceIPAddress": "127.0.0.1"
},
"s3": {
"configurationId": "testConfigRule",
"object": {
"eTag": "0123456789abcdef0123456789abcdef",
"sequencer": "0A1B2C3D4E5F678901",
"key": "HappyFace.jpg",
"size": 1024
},
"bucket": {
"arn": "arn:aws:s3:::mybucket",
"name": "roeyg-oregon-s3-bucket",
"ownerIdentity": {
"principalId": "EXAMPLE"
}
},
"s3SchemaVersion": "1.0"
},
"responseElements": {
"x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH",
"x-amz-request-id": "EXAMPLE123456789"
},
"awsRegion": "us-east-1",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "EXAMPLE"
},
"eventSource": "aws:s3"
}
]
}

我尝试了几种方法来查看是否有可能获得一个包含多于一个元素的列表,例如使用CLI或一起上传多个文件甚至整个文件夹,在所有这些情况下,每个事件我都得到一个项目。

我的问题是要知道是否存在一种情况,一次事件我可以获得一个文件以上?

这样,我将更改代码以使其具有循环,而不是像建议的那样对第一个元素的引用。

最佳答案

根据您当前的配置,每次调用将仅获得一条记录。这是因为每个不同的S3放置事件均以您的AWS Lambda函数作为接收者触发了不同的S3事件通知。然后,Lambda默认情况下最多可以处理100 concurrent executions,该限制可以根据传入事件的速率自动提高。

AWS Lambda接收Records作为集合,因为它使用S3事件通知将事件发送到lambda,因此使用S3 notification event message structure。在anticipation of event types that may return more than one record中,格式作为集合存在。您可以看到S3事件通知类型here的完整列表。

这不会影响来自诸如s3:ObjectCreated:Put之类的事件的S3通知,因此您可以按原样保留该函数,因为这就是Put通知的预期工作方式-one event -> one notification -> one invokation

就是说,如果您仍然希望您的代码每次调用能够处理多个记录,那么将其写入以下任何一个记录都没有害处:

  • 循环处理记录(文档中提供了一个示例:python example deployment code that AWS provides循环而不是仅获取第一条记录)。如果您走这条路,请考虑在应用程序无法忍受的情况下添加其他逻辑来过滤重复项。
  • 在> 1条记录上记录错误。
  • 关于amazon-web-services - S3 put()事件lambda触发器中可以包含多少条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40765699/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com