Блог Amazon Web Services
Быстрое прототипирование с новой AWS Step Functions Workflow Studio
Оригинал статьи: ссылка (Benjamin Smith)
Компания AWS недавно выпустила Workflow Studio для AWS Step Functions. Это новый визуальный редактор для создания рабочих процессов Step Functions в Консоли управления AWS. Данный пост показывает, как можно использовать Workflow Studio для быстрого прототипирования рабочих процессов. Также мы посмотрим, как переместиться в локальную среду разработки и интегрировать прототип с шаблонами «инфраструктуры как кода».
Со времён запуска в декабре 2016 года разработчики создавали рабочие процессы Step Functions с помощью Amazon States Language (ASL) с целью оркестрации различных сервисов в ключевых бизнес-приложениях. При этом они хотели более быстрые способы прототипирования и построения подобных рабочих процессов без необходимости написания пользовательского кода или использования дополнительных сервисов.
Так что же нового?
Новая Step Functions Workflow Studio предоставляет дополнительный функционал для построения рабочих процессов. Теперь разработчики и бизнес-пользователи могут быстро прототипировать рабочие процессы с помощью графического интерфейса в консоли Step Functions.
Эти рабочие процессы могут включать все те же состояния рабочих процессов, шаблоны и интеграции с сервисами, что и при разработке на базе ASL. Каждое состояние настраивается с помощью редактируемых форм. Определение рабочего процесса ASL может быть выгружено для дальнейшего редактирования в консоли или в вашем локальном IDE. Workflow Studio может создавать как новые рабочие процессы, так и изменять уже существующие. Для начала работы с Workflow Studio, посмотрите это ознакомительное видео.
Бизнес-пользователи
Workflow Studio предоставляет новые возможности для построения рабочих процессов на базе Step Functions для более широких групп пользователей. Бизнес-пользователи, а также любые другие пользователи, не имеющие технических навыков, могут быстро создавать прототипы рабочих процессов. Это может помочь заранее обсудить и понять бизнес-процессы перед их отправкой в команду разработки для добавления необходимой бизнес-логики и настройки интеграции между сервисами.
Быстрое прототипирование рабочих процессов
Workflow Studio позволяет создавать заглушки для функций AWS Lambda и интеграций с другими сервисами, используя простое перетаскивание (“drag-and-drop”) в интерфейсе. Это значит, что ресурсы не обязательно должны существовать во время проектирования рабочего процесса. Как только вы закончили фазу прототипирования, вы можете сохранить и продолжить редактирование рабочего процесса в консоли или скопировать ASL определение рабочего процесса в ваш локальный IDE. Далее, вы можете связать этот рабочий процесс с ресурсами приложения или шаблонами «инфраструктура-как-код» (IaC).
В рамках следующих шагов, я буду использовать Workflow Studio для построения рабочих процессов, описанных в этом блоге. Полный темплейт приложения можно найти в этом GitHub-репозитории. Рабочий процесс анализирует результат отправки формы веб-сайта на предмет негативного тона в сообщении. Он создаёт номер запроса и сохраняет данные в таблице Amazon DynamoDB. В конце рабочий процесс возвращает номер созданного запроса и оценку эмоционального тона сообщения.
Чтобы начать быстрое прототипирование этого рабочего процесса с Workflow studio, выполните следующие шаги:
- Зайдите в консоль Step Functions и выберите Create state machine.
- Затем выберите Design your workflow visually в разделе authoring method. После этого откроется Workflow Studio.
- Выберите AWS Lambda Invoke из меню Actions и перетащите в рабочий процесс.
- Выберите вкладку Configuration на панели Form и введите имя Detect Sentiment в поле State name.
- В поле function name, выберите Enter Function Name.
- Введите ${DetectSentiment} в поле function name parameters. Это динамическая ссылка на значение, предоставленное шаблоном IaC.Workflow Studio предоставляет интерфейс для настройки входящих и выходящих путей обрабоки в рабочем процессе.
- Перейдите на вкладку Output и выберите Combine input and result with ResultPath. Выбор этого варианта использует фильтр ResultPath для добавления результата к исходному входу состояния. Указанный путь показывает, куда добавить результат.
- Введите $.SentimentResults в текстовое поле ResultsPath.
- Чтобы посмотреть определение ASL рабочего процесса, выберите Definition в верхнем меню. Оно покажет:
- Название состояния: Detect Sentiment.
- Имя Lambda-функции использует динамическую ссылку на ${DetectSentiment}, которое передаётся из IaC-шаблона, описанного в следующих шагах.
- Конфигурация повторных попыток задана по умолчанию.
- ResultPath также определён.
Продолжаем создавать рабочий процесс, добавляя больше состояний Task и Flow. Готовый рабочий процесс выглядит так:
Переход в локальную среду разработки
Как только вы создали рабочий процесс в Workflow Studio, вы можете выгрузить ASL-определение в локальный IDE, чтобы сделать его частью IaC-шаблона. Шаблон описывает все ресурсы AWS, из которых состоит приложение:
- Чтобы скопировать ASL-определение, нажмите кнопку Definition в верхней части навигационной панели и полностью скоприруйте ASL-определение рабочего процесса в буфер обмена.
- Создайте новую папку в вашей локальной файловой системе с именем statemachine и сохраните в неё файл определения с именем sfn-template.asl.json. Скриншот показывает, как выглядит рабочий процесс, визуализированный с помощью AWS Toolkit for Visual Studio Code, в локальном IDE.
- AWS Serverless Application Model (AWS SAM) это IaC-фреймворк с открытым кодом для построения бессерверных приложений.
- Создайте шаблон AWS SAM с именем template.yaml для описания ресурсов приложения. Полную версию этого файла вы можете найти в GitHub-репозитории.
- Создайте папку для каждой Lambda-функции. Внутри каждой папки сохраните код функции в файл с именем app.js. Вы можете найти код функций в GitHub-репозитории. Итоговая структура папок с файлами нашего приложения выглядит так:
root
┣ LambdaFunctions/
┃ ┣ GenerateReferenceNumber/
┃ ┃ ┗ app.js
┃ ┣ detectSentiment/
┃ ┃ ┗ app.js
┃ ┗ sendEmailConfirmation/
┃ ┗ app.js
┣ statemachine/
┃ ┗ sfn-template.asl.json
┗ template.yaml
Полный код приложения вы сможете найти в этом GitHub-репозитории.
Шаблон AWS SAM описывает права безопасности для рабочего процесса Step Functions и позволяет создавать динамические ссылки на ресурсы, описанные в этом шаблоне, такие как Lambda-функции и таблица DynamoDB:
##########################################################################
# STEP FUNCTION #
##########################################################################
ProcessFormStateMachineExpressSync:
Type: AWS::Serverless::StateMachine # More info about State Machine Resource: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html
Properties:
DefinitionUri: statemachine/sfn-template.asl.json
DefinitionSubstitutions:
NotifyAdminWithSES: !Ref NotifyAdminWithSES
GenerateRefernceNumber: !Ref GenerateRefernceNumber
DetectSentiment: !Ref DetectSentiment
DDBTable: !Ref FormDataTable
Policies: # Find out more about SAM policy templates: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-policy-templates.html
- LambdaInvokePolicy:
FunctionName: !Ref NotifyAdminWithSES
- LambdaInvokePolicy:
FunctionName: !Ref DetectSentiment
- LambdaInvokePolicy:
FunctionName: !Ref GenerateRefernceNumber
- DynamoDBWritePolicy:
TableName: !Ref FormDataTable
Type: EXPRESS
- Значение DefinitionURI содержит местоположение определения ASL, которое было выгружено из Workflow Studio в файл statemachine/sfn-template.asl.json.
- Значение DefinitionSubstitutions содержит имена ресурсов, используемых в рабочем процессе. Здесь вы видите $.DetectSentiment – имя Lambda-функции, переданное в определение рабочего процесса. Оно было задано в Workflow Studio на предыдущих шагах.
Приложение можно развернуть с использованием AWS SAM CLI. Следуйте этим шагам в GitHub-репозитории, чтобы развернуть приложение.
Как только приложение будет развёрнуто, рабочий процесс может быть отредактирован путём обновления определения ASL в консоли Step Functions или в локальном файле шаблона. Кроме того, вы можете его изменить в визуальном интерфейсе Workflow Studio. Любые изменения, сделанные в Консоли управления AWS, должны быть скопированы обратно в локальный файл шаблона.
Выводы
AWS Step Functions Workflow Studio – это новый визуальный редактор для создания рабочих процессов Step Functions в Консоли управления AWS. Визуальный интерфейс может быть использован для быстрого создания новых или редактирования уже существующих рабочих процессов. Каждый шаг или состояние могут быть настроены с использованием редактируемых форм с наглядной визуализацией определения ASL, готового для выгрузки по мере необходимости.
Этот пост показывает, как использовать Workflow Studio для быстрого прототипирования рабочих процессов. Он также показывает, как выгрузить определение ASL в локальный IDE и добавить его в ваши IaC-шаблоны.
Workflow Studio включена в цену Step Functions без дополнительной оплаты и доступна во всех регионах, где доступны Step Function. Чтобы начать работу с рабочими процессами, посетите https://aws.amazon.com/ru/step-functions/.