Как избежать одновременного выполнения в функции aws step

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


person Hao Chen    schedule 22.10.2017    source источник


Ответы (1)


Вместо того, чтобы ваше правило события CloudWatch напрямую запускало пошаговую функцию, вы могли бы заставить его запускать лямбда-функцию. Функция Lambda может проверять, выполняются ли какие-либо пошаговые функции в состоянии RUNNING, с помощью API ListExecutions. В противном случае функция Lambda могла бы начать новое выполнение через StartExecution API.

person Trevor Sullivan    schedule 23.10.2017
comment
это небезопасно, два одновременных лямбда-вызова могут получить ответ от API без выполнения RUNNING, и оба одновременно запускают две пошаговые функции. Вам понадобится какая-то блокировка, явная или предоставляемая инфраструктурой AWS, предотвращающая одновременное выполнение лямбда- или пошаговых функций. - person Santi P.; 19.08.2019
comment
Простым решением этой проблемы с параллелизмом было бы установить для этой конкретной лямбда-функции значение 1, чтобы только одно выполнение проверяло состояние пошаговой функции в данный момент времени. - person Pubudu Jayawardana; 19.08.2019
comment
Раздел Предостережения в нижней части этой статьи может решить эту проблему aws.amazon.com/blogs/architecture/ - person chris; 04.06.2020
comment
@PubuduJayawardana - это неверно; ограничение лямбда приведет к сбою шага в функции шага, он не ждет доступности слота лямбда. - person shortstuffsushi; 29.10.2020