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