WorkflowStudioでAWS StepFunctionsワークフロー作成

はじめに

こんにちは。Tech DivのTA.NOGUCHIです。

複数のAWSタスクをAWS StepFunctionsでワークフロー化する機会があり、
WorkflowStudioというGUIでワークフロー定義できるツールを使用しました。
2021年7月8日にWorkflowStudioが登場し、
それまでは、JSON形式でStepFunctions定義を記述しなければなりませんでした。
GUIで簡単にワークフローが作成できたのでご紹介します。

AWS StepFunctionsとは

AWS Lambda関数やAmazonECSタスク等のイベント処理をステップ駆動で構築ができます。
したがって、JSON形式で定義すると図の右のようにフロー図で表示されます。

こちらがAWS StepFunctionsの公式ドキュメントです。
https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/welcome.html

WorkflowStudioを使用して定義

新しくStepFunctionsのステートマシンを作成する時にWorkfloStudioが選択できます。

[ワークフローを視覚的に設計]を選択し作成します。

アクションパネル(アクション)またはフローパネル(フロー)からコンポーネントを選択します。

アクションには、AWS Lambda、Amazon ECSタスク、他のStepFunctionsの実行等の様々なコンポーネントが用意されています。

アクションの代表的なもの

次に、フローには7つの状態が選択可能です。

選んだコンポーネントをドラック&ドロップでワークフローを作成します。

追加したコンポーネント(Lambda Step1-2)をクリック(選択)して、状態名やinvokeするFunctionの名前を編集することができます。

Lambdaのパラメータを編集したい場合には、[Edit as JSON]をONにしてJSON形式で編集します。
ECSタスクにパラメータがある場合も、APIパラメータの項目で直接JSON形式で編集します。
例えば、ECSタスクに以下のようなパラメータが必要な場合、
・コマンドの上書き:/app/script/demo.sh
・環境変数:
  "COMPANY_TYPE"には"1"
  "RECOVERY_MODE"には"TRUE"
下記のようなJSONになります。


{
  "Cluster": "arn:aws:ecs:ap-northeast-1::cluster/demo-cluster",
  "TaskDefinition": "arn:aws:ecs:ap-northeast-1::task-definition/demo_task_def",
  "Overrides": {
    "ContainerOverrides":[
      {
        "Name": "demo",
        "Command":[
          "ssh",
          "/app/script/demo.sh"
        ],
        "Environment":[
          {
            "Name": "COMPANY_TYPE",
            "Value": "1"
          },
          {
            "Name": "RECOVERY_MODE",
            "Value": "TRUE"
          }
        ]
      }
    ]
  }
}

ワークフローを構築し、[次へ]ボタンをクリックしていき、記述に問題なければStepFunctionsのステートマシンの完成です。

既に構築されているStepFunctionsを編集する場合にも、WorkflowStudioを使用して編集することが可能です。

StepFunctions編集画面にある[Workflow Studio]ボタンから編集画面に遷移することができます。

感想

・GUIなので直感的にワークフローを構築しやすいと思いました。

・ワークフローを修正したい場合もJSON形式で記述していくより、ミスが少なくできる。

・ワークフローだけ構築しておいて、細かい設定は段階的に設定していく方法も良いと思いました。