首页 > 解决方案 > 从 s3 事件触发获取 Lambda 中的输入

问题描述

一旦我在 s3 存储桶中获得任何文件,我就会尝试触发 Lambda。为此,我在 s3 存储桶中配置了事件。但是,我需要为将被触发的 Lambda(事件)提供输入。我怎么做?

标签: amazon-web-serviceseventsamazon-s3aws-lambda

解决方案


如果将 Amazon S3 事件配置为触发 AWS Lambda 函数,则 S3 将向 Lambda 函数提供有关触发该函数的 S3 对象的信息。

将 AWS Lambda 与 Amazon S3 结合使用 - AWS Lambda

{
  "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": "my-bucket",
          "ownerIdentity": {
            "principalId": "A3I5XTEXAMAI3E"
          },
          "arn": "arn:aws:s3:::my-bucket"
        },
        "object": {
          "key": "foo.jpg",
          "size": 1305107,
          "eTag": "b21b84d653bb07b05b1e6b33684dc11b",
          "sequencer": "0C0F6F405D6ED209E1"
        }
      }
    }
  ]
}

这些信息包括 Bucket 名称、对象的 Key(文件名)、触发函数的事件以及其他各种信息。然后,Lambda 函数可以使用此信息来适当地处理对象。


推荐阅读