Блог 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, выполните следующие шаги:

  1. Зайдите в консоль Step Functions и выберите Create state machine.
  2. Затем выберите Design your workflow visually в разделе authoring method. После этого откроется Workflow Studio.
  3. Выберите AWS Lambda Invoke из меню Actions и перетащите в рабочий процесс.
  4. Выберите вкладку Configuration на панели Form и введите имя Detect Sentiment в поле State name.
  5. В поле function name, выберите Enter Function Name.
  6. Введите ${DetectSentiment} в поле function name parameters. Это динамическая ссылка на значение, предоставленное шаблоном IaC.Workflow Studio предоставляет интерфейс для настройки входящих и выходящих путей обрабоки в рабочем процессе.
  7. Перейдите на вкладку Output и выберите Combine input and result with ResultPath. Выбор этого варианта использует фильтр ResultPath для добавления результата к исходному входу состояния. Указанный путь показывает, куда добавить результат.
  8. Введите $.SentimentResults в текстовое поле ResultsPath.
  9. Чтобы посмотреть определение ASL рабочего процесса, выберите Definition в верхнем меню. Оно покажет:
    1. Название состояния: Detect Sentiment.
    2. Имя Lambda-функции использует динамическую ссылку на ${DetectSentiment}, которое передаётся из IaC-шаблона, описанного в следующих шагах.
    3. Конфигурация повторных попыток задана по умолчанию.
    4. ResultPath также определён.

Продолжаем создавать рабочий процесс, добавляя больше состояний Task и Flow. Готовый рабочий процесс выглядит так:

Переход в локальную среду разработки

Как только вы создали рабочий процесс в Workflow Studio, вы можете выгрузить ASL-определение в локальный IDE, чтобы сделать его частью IaC-шаблона. Шаблон описывает все ресурсы AWS, из которых состоит приложение:

  1. Чтобы скопировать ASL-определение, нажмите кнопку Definition в верхней части навигационной панели и полностью скоприруйте ASL-определение рабочего процесса в буфер обмена.
  2. Создайте новую папку в вашей локальной файловой системе с именем statemachine и сохраните в неё файл определения с именем sfn-template.asl.json. Скриншот показывает, как выглядит рабочий процесс, визуализированный с помощью AWS Toolkit for Visual Studio Code, в локальном IDE.
  3. AWS Serverless Application Model (AWS SAM) это IaC-фреймворк с открытым кодом для построения бессерверных приложений.
  4. Создайте шаблон AWS SAM с именем template.yaml для описания ресурсов приложения. Полную версию этого файла вы можете найти в GitHub-репозитории.
  5. Создайте папку для каждой 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.thinkwithwp.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.thinkwithwp.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://thinkwithwp.com/ru/step-functions/.