amazon-web-services - lambda 处理程序 for 循环中的记录“for record in event['Records']:”在哪里?
问题描述
一个天真的问题,有谁知道 for 循环中的记录来自哪里?我知道解析正在下面发生,但不确定 Records 字典来自哪里
def handler(event, context):
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = record['s3']['object']['key']
解决方案
从此链接中,S3 事件(传递给您的处理程序的事件变量)看起来像:
{
"Records": [
{
"eventVersion": "2.1",
"eventSource": "aws:s3",
"awsRegion": "us-east-2",
"eventTime": "2019-09-03T19:37:27.192Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "AWS:AIDAINPONIXQXHT3IKHL2"
},
"requestParameters": {
"sourceIPAddress": "205.255.255.255"
},
"responseElements": {
"x-amz-request-id": "D82B88E5F771F645",
"x-amz-id-2": "vlR7PnpV2Ce81l0PRw6jlUpck7Jo5ZsQjryTjKlc5aLWGVHPZLj5NeC6qMa0emYBDXOo6QBU0Wo="
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "828aa6fc-f7b5-4305-8584-487c791949c1",
"bucket": {
"name": "lambda-artifacts-deafc19498e3f2df",
"ownerIdentity": {
"principalId": "A3I5XTEXAMAI3E"
},
"arn": "arn:aws:s3:::lambda-artifacts-deafc19498e3f2df"
},
"object": {
"key": "b21b84d653bb07b05b1e6b33684dc11b",
"size": 1305107,
"eTag": "b21b84d653bb07b05b1e6b33684dc11b",
"sequencer": "0C0F6F405D6ED209E1"
}
}
}
]
}
因此,您正在遍历Record
数组中的所有条目。虽然 S3 往往只有一条记录,但您应该将它们全部解析以防万一。
推荐阅读
- rust - 匹配分支上的 Rust reqwest 调用
- swiftui - SwiftUI 在详细视图中覆盖导航栏外观
- javascript - 如何使用 jQuery/JS 将类添加到非悬停的 div
- unity3d - 团结一致,如何在 NetworkServer.connections 上修复 KeyNotFoundException?
- android - Firebase“.info/connected”怎么了?
- reactjs - 在 Context.Provider 重新渲染中反应导航
- reactjs - 为什么我会收到:TypeError: _axios.default.get.mockResolvedValue is not a function
- java - AspectJ 和 Spring AOC
- sql - 如何编写一个计算特定日期的 case 表达式?
- javascript - 有没有办法设置组中需要检查的复选框的最少数量?