Теория
Что такое Step Functions?
Из AWS Docs: Step Functions — это сервис бессерверной оркестровки, который позволяет комбинировать функции AWS Lambda и другие сервисы AWS для создания критически важных для бизнеса приложений. С помощью графической консоли Step Functions вы видите рабочий процесс своего приложения как серию управляемых событиями шагов. Step Functions основана на конечных автоматах и задачах. Конечный автомат — это рабочий процесс. Задача — это состояние в рабочем процессе, которое представляет собой единицу работы, которую выполняет другой сервис AWS. Каждый шаг рабочего процесса — это состояние.
С помощью встроенных элементов управления Step Functions вы проверяете состояние каждого шага рабочего процесса, чтобы убедиться, что ваше приложение работает в правильном порядке и должным образом. В зависимости от вашего варианта использования Step Functions может вызывать сервисы AWS, такие как Lambda, для выполнения задач. Вы можете создавать рабочие процессы для обработки и публикации моделей машинного обучения. Вы можете использовать Step Functions для управления сервисами AWS, такими как AWS Glue, для создания рабочих процессов извлечения, преобразования и загрузки (ETL). Вы также можете создавать длительные автоматизированные рабочие процессы для приложений, требующих взаимодействия с человеком.
Или простыми словами – сервис для управления вашими процессами.
Какие могут быть возможные варианты использования Step Functions?
- Оркестрация Lambda Functions
 
  
 
- Разветвление
 
  
 
- Обработка исключительных ситуаций(Retry or Catch)
 
  
 
- Участие человека в процессе
 
  
 
- Параллелелизм
 
  
 
Типы процессов в Step Functions
- Standard – нужны для процессов выполняющихся долгое время, имеет широкую поддержку сервисов и вариантов взаимодействия
- Express – нужны для быстро выполняющихся процессов (5 минут), в ~20 раз экономии за миллион выполненных процессов. Имеет меньшую интеграцию с сервисами AWS
Типы интеграции с сервисами AWS
Request a response (default) — вызывает сервис и позволяет Step Functions перейти к следующему состоянию после получения ответа HTTP.
Run a job (.sync) — вызывает сервис и дожидается завершения задания.
Wait for a callback with a task token (.waitForTaskToken) — вызывает сервис с токеном задачи и дожидается возврата токена задачи с помощью обратного вызова.
Сравнение интеграции с сервисами AWS в Standard и Express типах
Supported Service Integrations for Standard
| Service | Request Response | Run a Job (.sync) | Wait for Callback (.waitForTaskToken) | 
|---|---|---|---|
| Lambda | ? | ? | |
| AWS Batch | ? | ? | |
| DynamoDB | ? | ||
| Amazon ECS/AWS Fargate | ? | ? | ? | 
| Amazon SNS | ? | ? | |
| Amazon SQS | ? | ? | |
| AWS Glue | ? | ? | |
| SageMaker | ? | ? | |
| Amazon EMR | ? | ? | |
| CodeBuild | ? | ? | |
| AWS Step Functions | ? | ? | ? | 
Supported Service Integrations for Express
| Service | Request Response | Run a Job (.sync) | Wait for Callback (.waitForTaskToken) | 
|---|---|---|---|
| Lambda | ? | ||
| AWS Batch | ? | ||
| DynamoDB | ? | ||
| Amazon ECS/AWS Fargate | ? | ||
| Amazon SNS | ? | ||
| Amazon SQS | ? | ||
| AWS Glue | ? | ||
| SageMaker | ? | ||
| Amazon EMR | ? | ||
| CodeBuild | ? | ||
| Step Functions | ? | ? | 
Хватит с тебя теории, пошли к примеру.
Теоретический пример
Для того чтобы получить хоть какое-то представление как выглядит сервис — рассмотрим Hello world-пример.
Предусловия
- AWS аккаунт
- Перейти в Step Functions service в AWS аккаунте
Итак, следующее что мы делаем:
- Переходим в “Create Step Functions”
- Define state machine = Author with code snippets
- Type = Standard
- Definition =
 
 { "Comment": "A Hello World example of the Amazon States Language using Pass states", "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "Result": "Hello", "Next": "World" }, "World": { "Type": "Pass", "Result": "World", "End": true } } }
 
Нажимаем Start execution. Insert можно не передавать. Должны увидеть вот такую диаграмму:

Мои поздравления, вы создали простейшую Step Functions.
Вместо заключения
Если эта тема будет интересна, в следующей части создатим Step Functions с интеграцией AWS Lambda + SQS + SNS, как показано на диаграмме:

Ссылки на источники:
https://docs.aws.amazon.com/step-functions/
 
           
 
ctacka
Как-то совсем куцо. Ни слова про activities, про возможность запуска других SFN, про динамическое ветвление, а это очень важно в рассказе про такой сервис.
Сам пользуюсь SFN уже года два, очень классный сервис.
ArtemGontar Автор
Статья планировалась как вводная. В следующей статье на эту тему рассмотрю более глубокие вещи.