У меня есть лямбда-функция, которая получает объект S3Event, когда файл помещается в S3 Bucket. Когда лямбда не работает, она переходит в очередь недоставленных писем, настроенную в Amazon SQS.
Когда я извлекаю эти сообщения, это тело:
{
"Records": [
{
"eventVersion": "2.1",
"eventSource": "aws:s3",
"awsRegion": "us-east-1",
"eventTime": "d",
"eventName": "d:Put",
"userIdentity": {
"principalId": ""
},
"requestParameters": {
"sourceIPAddress": "2"
},
"responseElements": {
"x-amz-request-id": "",
"x-amz-id-2": "g"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "",
"bucket": {
"name": "",
"ownerIdentity": {
"principalId": ""
},
"arn": ""
},
"object": {
"key": "",
"size": 12502,
"eTag": "",
"sequencer": ""
}
}
}
]
}
Это немного похоже на объект S3Event, который содержит список записей S3EventNotification. Я попытался десериализовать его в объект события S3, используя следующее:
S3Event event = new GsonBuilder().serializeNulls().create().fromJson(s3EventString, S3Event.class);
Это приводит к нулевому объекту, например так:
{"records":null}
Я заметил в возвращении json из SQS буква «R» в записях пишется с большой буквы. Я не был уверен, что это имело значение, поэтому я изменил его на строчную букву "r", и это выдает эту ошибку:
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING
Я действительно не уверен, что это за тип объекта на самом деле.
Любая помощь будет принята с благодарностью.