Вызовите лямбда-выражение для каждого объекта в сегменте S3

#amazon-web-services #amazon-s3 #aws-lambda

#amazon-web-services #amazon-s3 #aws-lambda

Вопрос:

У меня есть большой сегмент S3 (> 3 ТБ), содержащий только десятки тысяч небольших data.txt файлов с хэшированным префиксом, например:

 uuid1/data.txt
uuid2/data.txt
uuid3/data.txt
...
  

где uuid — это, например, некоторый уникальный идентификатор uuid1=hd73nv93ha7d .

У меня также есть функция Lambda, которая обрабатывает эти data.txt файлы и сохраняет результат в другом сегменте s3. Единственным входным аргументом лямбда-функции является ключ data.txt , например Key=uuid123/data.txt .

Какой наилучший способ или сервис, который выполняет цикл по сегменту и запускает лямбда-выражение (одновременно) ровно один раз для каждого data.txt файла?

Комментарии:

1. Является ли «ровно один раз» жестким требованием? Недостаточно ли «хотя бы один раз»?

2. Вам нужно ls использовать все объекты в сегменте, а затем либо напрямую вызвать лямбда-выражение, либо поместить сообщение в очередь sqs, которая затем запускает лямбда-выражение.

Ответ №1:

Используйте инвентаризацию S3, чтобы преобразовать список файлов в корзине S3 в файл. Выполните итерацию по списку и вызовите лямбда-выражение, используя соответствующий SDK API. Вот функция JS для вызова лямбда-выражения.