はじめに
こんにちは。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形式で記述していくより、ミスが少なくできる。
・ワークフローだけ構築しておいて、細かい設定は段階的に設定していく方法も良いと思いました。