Логика очистки в AWS Step Functions

У меня есть задача с LambdaA в конечном автомате Step Functions для обработки сбоев и выполнения очистки, например обновления статуса задания в DDB.

Но выполнение пошаговых функций само по себе также может завершиться неудачно, например, может нарушиться общий тайм-аут или произойдет сбой между шагами. Поэтому мне нужно добавить LambdaB для обработки ошибок в событие CloudWatch Step Functions и выполнить аналогичную очистку.

Теперь я думаю, могу ли я удалить LambdaA и просто перейти в состояние Fail, которое должно вызвать событие CloudWatch, и вся очистка будет зависеть от LambdaB.

Это хороший дизайн? Есть ли какие-либо передовые методы проектирования логики очистки для пошаговых функций?

Спасибо


person cn123h    schedule 25.02.2021    source источник


Ответы (1)


По моим наблюдениям, разумно разделить сложные задачи на небольшие и объединить разные сервисы AWS.

Также вы можете попробовать использовать обработку ошибок пошаговой функции с атрибутом Retry.

"Retry": [ {
   "ErrorEquals": [ "States.Timeout" ],
   "IntervalSeconds": 3,
   "MaxAttempts": 2,
   "BackoffRate": 1.5
} ]

Ссылка: https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html

Но затем вы должны добавить в свой LambdaA логику, согласно которой, если это Retry, он будет очищен. Если нет, он просто движется вперед.

person Leondkr    schedule 25.02.2021
comment
Спасибо за ваш ответ. Меня устраивает повторная попытка, но меня больше всего беспокоит то, что мы не можем поймать всю ошибку выполнения в конечном автомате, поэтому LambdaA - это только ошибка улавливания других шагов, но мне все еще нужен LambdaB, чтобы уловить ошибку всего выполнения . Тогда почему я не объединяю их в один и полагаюсь только на LambdaB? - person cn123h; 25.02.2021