S3 - Получение метаданных из сообщения S3 Загрузка лямбда-функции - PullRequest
0 голосов
/ 15 января 2020

Я генерирую предварительно назначенный URL-адрес, используя s3.getSignedUrl('putObject', params), и для своих параметров

var params = {
    Bucket: bucketName,
    Key: photoId + "-" + photoNumber + "-of-" + numberImages + ".jpeg",
    Expires: signedUrlExpireSeconds,
    ContentType: contentType,
    Metadata : { testkey1 : "hello" }
};

Я пытаюсь получить метаданные в своей лямбда-функции успешной загрузки S3, однако она не отображается. Кто-нибудь знает почему? Загрузка прошла успешно, и для моих распечатанных журналов я получаю все, кроме тега метаданных в случае:

console.log(event);

"Records": [
    {
        "eventVersion": "2.1",
        "eventSource": "aws:s3",
        "awsRegion": "us-east-1",
        "eventTime": "2020-01-15T06:51:57.171Z",
        "eventName": "ObjectCreated:Put",
        "userIdentity": {
            "principalId": 
        },
        "requestParameters": {
            "sourceIPAddress": 
        },
        "responseElements": {
            "x-amz-request-id": "4C32689CE5B70A82",
            "x-amz-id-2": "AS0f97RHlLW2DF6tVfRwbTeoEpk2bEne/0LrWqHpLJRHY5GMBjy/NQOHqYAMhd2JjiiUcuw0nUTMJS8pDAch1Abc5xzzWVMv"
        },
        "s3": {
            "s3SchemaVersion": "1.0",
            "configurationId": "9a9a755e-e809-4dbf-abf8-3450aaa208ed",
            "bucket": {
                "name": ,
                "ownerIdentity": {
                    "principalId": "A3SZPXLS03IWBG"
                },
                "arn": 
            },
            "object": {
                "key": "BcGMYe-1-of-1.jpeg",
                "size": 19371,
                "eTag": "45c719f2f6b5349cc360db9a13d0cee4",
                "sequencer": "005E1EB6921E08F7E4"
            }
        }
    }
]

1 Ответ

1 голос
/ 15 января 2020

Это s3 структура сообщения о событии . структура сообщения изначально не содержит метаданных.

Вам необходимо получить метаданные в функции lambda лично.

Вы бы получили метаданные через s3 head-object команда с bucket-name и object-key в полученном событии.

{  
   "Records":[  
      {  
         "eventVersion":"2.2",
         "eventSource":"aws:s3",
         "awsRegion":"us-west-2",
         "eventTime":The time, in ISO-8601 format, for example, 1970-01-01T00:00:00.000Z, when Amazon S3 finished processing the request,
         "eventName":"event-type",
         "userIdentity":{  
            "principalId":"Amazon-customer-ID-of-the-user-who-caused-the-event"
         },
         "requestParameters":{  
            "sourceIPAddress":"ip-address-where-request-came-from"
         },
         "responseElements":{  
            "x-amz-request-id":"Amazon S3 generated request ID",
            "x-amz-id-2":"Amazon S3 host that processed the request"
         },
         "s3":{  
            "s3SchemaVersion":"1.0",
            "configurationId":"ID found in the bucket notification configuration",
            "bucket":{  
               "name":"bucket-name",
               "ownerIdentity":{  
                  "principalId":"Amazon-customer-ID-of-the-bucket-owner"
               },
               "arn":"bucket-ARN"
            },
            "object":{  
               "key":"object-key",
               "size":object-size,
               "eTag":"object eTag",
               "versionId":"object version if bucket is versioning-enabled, otherwise null",
               "sequencer": "a string representation of a hexadecimal value used to determine event sequence, 
                   only used with PUTs and DELETEs"
            }
         },
         "glacierEventData": {
            "restoreEventData": {
               "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format, for example, 1970-01-01T00:00:00.000Z, of Restore Expiry",
               "lifecycleRestoreStorageClass": "Source storage class for restore"
            }
         }
      }
   ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...