Как получить детали триггера S3 внутри лямбда-функции? - PullRequest
0 голосов
/ 17 июня 2020

Я создал лямбда-функцию, которая запускается с помощью события S3 PutObject. Моя корзина S3 выглядит примерно так:

s3://my-bucket-name/directory_1/...
s3://my-bucket-name/directory_2/...
s3://my-bucket-name/directory_3/...

Другое приложение создает папки типа directory_1 и так далее. После создания данных в этом каталоге приложение также создает файл с именем _SUCCESS. поэтому один из каталогов выглядит так:

s3://my-bucket-name/directory_1/data.txt
s3://my-bucket-name/directory_1/_SUCCESS

Теперь я хочу активировать свою лямбда-функцию, как только этот файл _SUCCESS будет создан. поэтому я добавил триггер S3 в лямбда следующим образом:

Event type: ObjectCreatedByPut
Bucket: my-bucket-name
Prefix: directory
Suffix: _SUCCESS

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

Например, если s3: // my-bucket-name / directory_1 / _SUCCESS запускает мою лямбда-выражение, я смогу получить полный путь к этому файлу внутри этой лямбда-функции.

1 Ответ

1 голос
/ 17 июня 2020

Структура события уведомления S3 подробно описана здесь .

Например, чтобы получить имя сегмента из события (при условии, что в событии 1 запись):

bucket_name = event['Records'][0]['s3']['bucket']['name']

Аналогично для ключа:

key_name = event['Records'][0]['s3']['object']['key']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...