AWS S3生命周期过期事件触发Lambda:单批还是单对象调用?
S3生命周期过期事件触发Lambda的批量规则
当S3存储桶有大量对象因生命周期策略过期时,不会针对每个对象单独触发Lambda调用,但也不会一次性把10万条记录都塞进一个Lambda事件里,而是按规则批量聚合后发送。
具体逻辑:
- S3会将过期对象的事件进行批量聚合,单个Lambda事件的
Records数组最多包含1000条记录(该数值可在S3事件通知配置中调整,但存在上限) - 针对100,000个过期对象,会触发约100次Lambda调用(100000÷1000),每个调用的事件结构和你提供的示例一致,只是
Records中最多包含1000条过期对象的记录
示例事件结构(S3标准字段无需翻译):
{ "Records": [ { "eventVersion": "2.1", "eventTime": "2024-10-18T12:00:00.000Z", "eventName": "DeleteObject", "s3": { "bucket": { "name": "my-bucket" }, "object": { "key": "object1" } } }, { "eventVersion": "2.1", "eventTime": "2024-10-18T12:00:00.000Z", "eventName": "DeleteObject", "s3": { "bucket": { "name": "my-bucket" }, "object": { "key": "object2" } } }, ... { "eventVersion": "2.1", "eventTime": "2024-10-18T12:00:00.000Z", "eventName": "DeleteObject", "s3": { "bucket": { "name": "my-bucket" }, "object": { "key": "object1000" } } } ] }
额外注意:
- 批量事件会在短时间内连续触发,需确保Lambda能应对并发调用
- 若Lambda处理失败,S3会自动重试,因此你的元数据删除逻辑要保证幂等性,避免重复操作导致数据异常
内容的提问来源于stack exchange,提问作者Suprem Vanam
相关产品推荐
相关产品推荐

