Я бы не использовал пошаговые функции для этого варианта использования. Map
состояние требует параметр ItemsPath
, который указывает на массив элементов в Data
(JSON, который передается из одного состояния в другое). Размер этого JSON ограничен 32 КБ (фактически, вероятно, около 32 КБ, я не углублялся в детали обработки кодирования пошаговыми функциями). Так что это фактически исключает Map
в пошаговых функциях, потому что вы просто достигнете предела обслуживания с таким количеством данных.
В этом случае использования я думаю, что было бы лучше использовать SQS и Lambda. Загрузка файла в S3 запускает Lambda, что запускает пакетное задание AWS, которое, в свою очередь, загружает файл CSV и отправляет сообщения для каждой строки в одну или несколько очередей SQS (если вы хотите использовать другую лямбду для разных типов строк). Lambda имеет встроенную интеграцию с SQS, так что вы можете использовать это.
Имейте в виду, что SQS может дублировать сообщение, поэтому ваша лямбда должна работать правильно, даже если одна и та же строка обрабатывается несколько раз (лямбда должна быть идемпотентной). По сути, любой элемент вашей системы должен быть идемпотентным, если вы хотите иметь надежную, распределенную систему.
Другое решение (если вы настаиваете на использовании пошаговых функций) - начать новое выполнение для каждой строки в файле CSV,однако я думаю, что вы быстро достигнете пределов обслуживания, и это будет дорого стоить.