0

此代码显示存储桶 testbucket-101 中上传的所有对象,并且没有调用任何 api。基本上,s3 事件的输出 json 应该发布到不同的 API。

import boto3
import os

def lambda_handler(event, context):
    s3 = boto3.resource('s3')
    bucket=s3.Bucket('testbucket-101')
    for key in bucket.objects.all():
        print(key.key)
4

1 回答 1

0

您可以配置 Amazon S3 事件通知并将您的 lambda 注册为目标。

甚至您可以解析和提取对象名称和存储桶。最终,下载对象并调用 API

您将收到类似于此 教程的事件:将 AWS Lambda 与 Amazon S3 结合使用

{
  "Records":[
    {
      "eventVersion":"2.0",
      "eventSource":"aws:s3",
      "awsRegion":"us-west-2",
      "eventTime":"1970-01-01T00:00:00.000Z",
      "eventName":"ObjectCreated:Put",
      "userIdentity":{
        "principalId":"AIDAJDPLRKLG7UEXAMPLE"
      },
      "requestParameters":{
        "sourceIPAddress":"127.0.0.1"
      },
      "responseElements":{
        "x-amz-request-id":"C3D13FE58DE4C810",
        "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
      },
      "s3":{
        "s3SchemaVersion":"1.0",
        "configurationId":"testConfigRule",
        "bucket":{
          "name":"sourcebucket",
          "ownerIdentity":{
            "principalId":"A3NL1KOZZKExample"
          },
          "arn":"arn:aws:s3:::sourcebucket"
        },
        "object":{
          "key":"HappyFace.jpg",
          "size":1024,
          "eTag":"d41d8cd98f00b204e9800998ecf8427e",
          "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko"
        }
      }
    }
  ]
}

为 S3 存储桶启用和配置事件通知

于 2021-01-30T09:03:09.470 回答