Теория
Что такое 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/