微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取在 s3 中上传的最新对象名称并使用 AWS Lambda 将该数据json推送到不同的 api命中 api?

如何解决如何获取在 s3 中上传的最新对象名称并使用 AWS Lambda 将该数据json推送到不同的 api命中 api?

这段代码显示了存储桶 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)

解决方法

您可以 Configuring Amazon S3 event notifications 并将您的 lambda 注册为目的地。

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

您会收到类似这样的事件 Tutorial: Using AWS Lambda with 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"
        }
      }
    }
  ]
}

Enabling and configuring event notifications for an S3 Bucket

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。