首页 > 解决方案 > 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']

标签: amazon-web-servicesfor-loopparsingaws-lambda

解决方案


从此链接中,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 往往只有一条记录,但您应该将它们全部解析以防万一。


推荐阅读