Как получить имя корзины s3 и ключ файла, из события в лямбде - PullRequest
0 голосов
/ 22 декабря 2018

У нас есть набор триггеров для лямбда-функции, и мы хотели бы получить самый новый файл из корзины S3, когда он помещается в него.Имя файла изменится.Мы хотим извлечь объект файла из события, но не можем понять, как.

Прямо сейчас, у нас есть прямое имя файла, записанное как переменная в функции лямбда-выражения, и мы тестируем его локально.Кажется, это работает, но мы хотим сделать нашу лямбду универсальной и захватить файл, используя переданный параметр события. По сути, нам нужно поменять эти две строки и сделать их общими.

const bucket = 'bucket-12345';
const key = 'testXML.xml';

Спасибо залюбая помощь.

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Вот как выглядит событие.Документацию можно найти здесь , как @MarkB упоминает в комментариях.

Вы найдете то, что вам нужно, на event.Records[index].s3.object.key.В зависимости от вашей структуры корзины ключ может выглядеть как путь.В этом случае вам просто нужно разобрать конец ключа, который будет содержать имя файла.

{
  "Records": [
    {
      "eventVersion": "2.0",
      "eventTime": "1970-01-01T00:00:00.000Z",
      "requestParameters": {
        "sourceIPAddress": "127.0.0.1"
      },
      "s3": {
        "configurationId": "testConfigRule",
        "object": {
          "eTag": "0123456789abcdef0123456789abcdef",
          "sequencer": "0A1B2C3D4E5F678901",
          "key": "HappyFace.jpg",
          "size": 1024
        },
        "bucket": {
          "arn": bucketarn,
          "name": "sourcebucket",
          "ownerIdentity": {
            "principalId": "EXAMPLE"
          }
        },
        "s3SchemaVersion": "1.0"
      },
      "responseElements": {
        "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH",
        "x-amz-request-id": "EXAMPLE123456789"
      },
      "awsRegion": "us-east-1",
      "eventName": "ObjectCreated:Put",
      "userIdentity": {
        "principalId": "EXAMPLE"
      },
      "eventSource": "aws:s3"
    }
  ]
}
0 голосов
/ 22 декабря 2018

Взгляните на этот пример :

exports.handler = function(event, context, callback) {
    var bucket = event.Records[0].s3.bucket.name;
    var key = event.Records[0].s3.object.key;
    …
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...