У меня есть уведомление о загрузке корзины S3, чтобы поместить сообщение в очередь SQS. Очередь SQS запускает лямбда-функцию. Я пытаюсь извлечь имя файла, который был загружен из сообщения SQS, которое запускает лямбда-функцию. Моя запись события SQS выглядит следующим образом при печати в журналах CloudWatch:
{
"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):
Как получить доступ к имени файла из лямбда-функции?