【发布时间】:2020-07-17 12:13:58
【问题描述】:
我收到关于 S3 存储桶上传的通知,以将消息放入 SQS 队列。 SQS 队列触发一个 lambda 函数。我正在尝试从触发 lambda 函数的 SQS 消息中提取上传的文件的名称。当打印到 CloudWatch 日志时,我的 SQS 事件记录如下所示:
{
"Records": [
{
"eventVersion": "2.1",
"eventSource": "aws:s3",
"awsRegion": "eu-west-2",
"eventTime": "2020-04-05T13:55:30.970Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "A2RFWU4TTDGK95"
},
"requestParameters": {
"sourceIPAddress": "HIDDEN"
},
"responseElements": {
"x-amz-request-id": "024EF2A2E94BD5CA",
"x-amz-id-2": "P/5p5mDwfIu29SeZcNo3wjJaGAiM4yqBqp4p3gOfLVPeZhf+w5sRjnxsost3BuYub1FVf7tuMFs9KoC98+fwSI9NrT5WbjYq"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "ImageUpload",
"bucket": {
"name": "HIDDEN",
"ownerIdentity": {
"principalId": "A2RFWU4TTDGK95"
},
"arn": "arn:aws:s3:::HIDDEN"
},
"object": {
"key": "activity1.png",
"size": 41762,
"eTag": "9e1645a32c2948139a90e75522deb5ab",
"sequencer": "005E89E354A986B50D"
}
}
}
]
}
使用此代码:
import boto3
rek = boto3.client('rekognition')
def test(event, context):
for record in event['Records']:
print ("test")
payload=record["body"]
fullpayload=str(payload)
print(fullpayload)
使用 ['s3]['object]['key'] 访问有效负载字符串上的文件名 'activity1.png' 会给我这个错误:
's3': KeyError
Traceback (most recent call last):
如何通过 lambda 函数访问文件名?
【问题讨论】:
标签: python amazon-s3 aws-lambda amazon-sqs