#amazon-web-services #amazon-s3 #aws-lambda #aws-step-functions
#amazon-web-services #amazon-s3 #aws-lambda #aws-step-функции
Вопрос:
Я перебираю сегмент S3 для обработки файлов. Мое решение основано на этом примере;
https://rubenjgarcia.es/step-function-to-iterate-s3/
Итерация работает нормально, но, к сожалению, я превышаю 25 000 событий, разрешенных одним выполнением, поэтому в конечном итоге происходит сбой. Я знаю, что вам нужно начать новое выполнение функции step, но мне неясно, как сообщить ей, где я нахожусь на текущей итерации. У меня есть подсчет количества обработанных файлов и, очевидно, ContinuationToken. Могу ли я использовать ContinuationToken, чтобы отслеживать, где я нахожусь при переборе сегмента s3, и счетчик, чтобы сообщить ему, когда начинать новое выполнение.
Я прочитал документы AWS https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-continue-new.html но я не уверен, с чего начать применять это к моему собственному решению. Кто-нибудь делал это при переборе объектов в сегменте s3, если вы можете указать мне правильное направление?
Ответ №1:
Я могу придумать два варианта:
-
в вашем решении вы выполняете итерацию до тех пор, пока есть следующий токен. Вы можете расширить это и создать счетчик и на каждой итерации увеличивать его. И измените свое условие на итерацию до тех пор, пока следующий токен или количество меньше порогового значения.
-
Я предпочитаю использовать вложенный конечный автомат, чтобы преодолеть ограничение в 25 000 событий. Допустим, каждый раз, когда вы считываете 100 элементов из s3. Если вы передадите список на вложенный конечный автомат для их обработки, конечный автомат верхнего уровня не достигнет 25 000 событий, а также вложенного конечного автомата.
Комментарии:
1. Я начал пытаться реализовать что-то вроде первого решения, и я думаю, что я близок к тому, чтобы заставить его работать, поэтому я рад, что я на правильном пути. Второе решение выглядит интересным, но я нахожусь во временном кризисе, поэтому не хочу перепроектировать использование вложенного конечного автомата, если только мне не нужно. Я думаю, что я попытаюсь реализовать второе решение в качестве учебного проекта. Я уверен, что это произойдет в какой-то момент. 🙂 Еще раз спасибо за вашу помощь.
2. В итоге я перешел на вложенные конечные автоматы после того, как попробовал оба метода, потому что это казалось гораздо более перспективным. Это работает прекрасно