如何解决如何获取在 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 举报,一经查实,本站将立刻删除。