Step Functions Flashcards
Каковы сущности Step Functions?
State Machines, Workflows, States, Tasks, Activities, Transitions
Запускать Step Function можно через … при запуске можно … в формате …
через SDK, API Gateway, Event
запуская Step Function, ей можно передать параметры в формате ключ-значение
На какие группы делятся задачи в Step Functions?
Примеры
Task State
может
- вызывать AWS сервис
- вызвать Lambda Function
- вставить запись в DynamoDB
- запустить ECS task и дождаться окончания его выполнения
- опубликовать SNS сообщение
- запускать “activity”
- запускать EC2, ECS, on-premises
- activity будет
poll
’ить (спрашивать) Step Function, чтобы найти себе работу - activity пришлёт результат своей работы в Step Function
Step Functions объявляются через ….
Формат этого … называется ….
JSON
JSON’аAmazon State Language
(ASL)
-
Choice
State - … -
Fail or Succeed
State - … -
Pass
State - … -
Wait
State - … -
Map
State - … - ❗️
Parallel
State - … -
Task
State - …
-
Choice
State - проверка условия перед разветвлением (можно указать default branch) -
Fail or Succeed
State - остановить выполнение с ошибкой (или с успехом) -
Pass
State - передать input в output или передать фиксированное значение (без обработки) -
Wait
State - delay на сколько-то секунд или до какой-то даты -
Map
State - динамически итерировать шаги - ❗️
Parallel
State - параллельно выполнять несколько ветвей -
Task
State - действие, сам блок
IAM Role свойственна для ресурсов …
EC2 instance, Lambda Function, ECS Task, State Machine
Какие способы обработать ошибку есть в Step Function?
Почему НЕ отлавливать ошибку прямо в коде Лямбда функции?
-
Retry
- попробовать снова -
Catch
- проследовать в “failure path”
ℹ️ Эти техники нужно использовать именно в Step Function алгоритме,
а НЕ в коде приложения (Лямбда функции).
- упрощается код приложения (Лямбда функции)
- в истории выполнения Step Function будут зафиксированы все
Retry
и всеCatch
- при необходимости множества долгих
Retry
’ев, код Лямбда функции НЕ превысит 15-ти минут
Predefined Error Codes
- States.ALL
- States.Timeout
- States.TaskFailed
- States.Permissions
Какие значения у каждого из них?
-
States.ALL
- подходит любому Error’у (дефолтная ветка обработки вRetry
иCatch
) -
States.Timeout
- превышен лимит времени на выполнение
или Активность перестала отвечать своим heartbeat’ом -
States.TaskFailed
- например, exception во время выполнения Lambda функции -
States.Permissions
- не хватает прав на выполнение операции
Декларация Retry читается … и состоит из …, каждая из которых имеет
- ErrorEquals
- …
- IntervalSeconds
- …
- BackoffRate
- …
- MaxAttempts
- …
Когда все попытки исчерпаны, код …
сверху вниз
из массива ловушек
ErrorEquals
-
IntervalSeconds
- delay перед retry’ем -
BackoffRate
- коэффициент, на который умножается delay после каждой неудачной попытки MaxAttempts
переходит в секцию Catch
Декларация Catch читается … и состоит из …, каждая из которых имеет
ErrorEquals
-
Next
- … -
ResultPath
- …
сверху вниз
из массива ловушек
ErrorEquals
-
Next
- имя FallBack’а (или имя Task’а), в который нужно перейти -
ResultPath
- путь к полю, значение которого отправится на входNext
блока
Что значит поле ResultPath
В поле ResultPath указываем путь к полю, значение которого перейдёт из Output’а в Input следующего блока.
Use case: include the “error” object in the input