Это хороший вариант использовать функцию шага для приема пищи? - PullRequest
1 голос
/ 11 февраля 2020

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

Здесь я могу вызвать несколько экземпляров подчиненных лямбд и достичь параллелизма

Позже я прочитал о Step Function ( SF), которые управляют несколькими AWS службами для выполнения sh задачи. Теперь, я думаю изменить дизайн моей службы приема пищи с SF. С помощью состояния Map очень удобно добиться параллелизма: https://aws.amazon.com/blogs/aws/new-step-functions-support-for-dynamic-parallelism/ Но я не уверен, насколько он будет полезен, поскольку это новая функция и тесно связана.

Любое предложение, как добиться этого и / или любого другого альтернативного подхода в отношении SF

1 Ответ

0 голосов
/ 01 марта 2020

Прежде всего, мне нравится ваш подход к созданию разных лямбд Master / Slave: распространенная ошибка - попытаться создать уникальную «рекурсивную» функцию, которая выполняет как разбиение на фрагменты, так и загрузку на основе события ввода. Поначалу кажется, что это нормально, но может привести к бесконечным петлям и дорогостоящим счетам.

TL; DR Я думаю, что в вашем подходе нет ничего плохого, и я бы придерживайтесь его.

Я добавляю две несвязанные мысли по этому вопросу:

  1. SF получают больше значений , когда вам нужно что-то делать после загрузки в DynamoDB (например, если вы хотите удалить все загруженные элементы, если лямбда-код не работает, или вы хотите записать общее количество добавленных элементов), или в случае, если вы хотите переключиться на последовательный подход (например, чтобы сэкономить некоторый WCU) в таблице Dynamo).

  2. AWS Data Pipeline - это инструмент, предназначенный для выполнения ETL и поддерживающий рабочий процесс от S3 до DynamoDB. Стоит взглянуть на это (в официальной документации вы можете найти учебник для приема из S3 в DynamoDB ).

То, как вы создали сервис Это хорошо для меня, и я бы не стал тратить время на его изменение, если вы довольны им: имейте в виду преимущества различных конструкций, но избегайте чрезмерной оптимизации на ранних стадиях.

...