一旦我在s3存储桶中获得任何文件,我就会尝试触发Lambda。为此,我在s3存储桶中配置了事件。但是,我需要给将被触发的Lambda (事件)提供一个输入。我该怎么做?
发布于 2019-12-18 23:24:45
将新的Lambda函数处理程序添加到项目中。创建一个新的函数处理程序名称,名为'S3FunctionHandler';使用已选择的默认输入类型S3 Event;将输出类型保留为object:

这将使用Lambda函数处理程序创建一些样板代码,该处理程序接受S3事件作为输入:

选择S3FunctionHandler,然后选择一个IAM角色:

切换到亚马逊网络服务管理控制台,使用虚拟S3事件测试Lambda函数。我们需要对其进行测试,为此,让我们配置一个测试事件。选择S3 Put事件,您可以通过单击Actions选项卡找到该事件。这模拟了某人将新对象上载到S3存储桶。

发布于 2019-12-24 04:37:55
如果Amazon S3事件配置为触发AWS Lambda函数,则S3将向Lambda函数提供有关触发该函数的S3对象的信息。
来自Using AWS Lambda with 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名称、对象的键(文件名)、触发函数的事件以及其他各种信息。Lambda函数随后可以使用此信息来适当地处理对象。
https://stackoverflow.com/questions/59394724
复制相似问题