AWS Step Functionsとは?状態(State)の用語解説
AWS Step Functionsとは?
そもそもStep Functionsとはどういう意味かというと、そのまま直訳すると「階段関数」という意味になります。それぞれの関数を繋げて実行すると捉えると良いかもしれませんね。
では、AWS Step Functionsとは・・・?
ビジュアルワークフローを使用してソフトウェアやシステムを調整するサービスのことです。それぞれが別々のシステムであってもAWS Step Functionsを用いることで、簡単にアプリケーションを接続し、調整ができるようになります。
AWS Step Functionsではワークフローのことをステートマシンと呼んでいます。AWSの公式サイトでステートマシンと記述があればワークフローのことだと認識していただくと良いでしょう。ここではわかりやすくするために「ワークフロー」で統一します。
AWS Step Functionsの概要
AWS Step FunctionsはAmazon States Language(以下、Amazon ステートメント言語)というワークフローを宣言するために必要な言語が使用されます。Amazon ステートメント言語はJSONをベースにした言語です。この言語はいくつかの状態を表すStateを定義する必要があります。
- Task(ワークフロー内のすべての作業は、Taskにより処理される)
- Choice(分岐ロジック、次に移行する状態の決定)
- Wait(指定した時間、待機することができる)
- Succeed(実行を正常に停止)
- Fail(エラーによる実行の停止)
- Parallel(並列処理が可能)
- Map(動的並列処理が可能)
AWS Step Functionsには上記の状態(State)を定義できます。
状態(State)の用語解説
Task
Taskは実行される単一の作業単位を表します。直接Lambda関数を呼び出すことができ、作業を実行します。また、Taskでは以下のフィールドを利用できます。
- Resource (必須)
- Parameters
- ResultPath
- Retry
- Catch
- TimeoutSeconds
- HeartbeatSeconds
Choice
Choiceは分岐処理が可能で、AndやOrなどの比較演算子を利用できます。また、以下のフィールドを利用できます。
- Choices (必須)
- Default
Wait
Waitは指定した時間、待機することが可能で、相対時間と絶対時間のいずれかを選択できます。また、以下のフィールドを利用でき、いずれか1つを指定しなければなりません。
- Seconds
- Timestamp
- SecondsPath
- TimestampPath
Succeed
Succeedは実行を正常に停止させます。処理は終了している状態になるためEndフィールドやNextフィールドは不要です。
Fail
Failはエラーにより実行が停止します。処理が終了している状態になるためEndフィールドやNextフィールドは不要です。また、以下のフィールドが利用できます。
- Cause
- Error
Parallel
Parallelは並列処理が可能で、以下のフィールドを利用できます。
- Branches (必須)
- ResultPath
- Retry
- Catch
Map
Mapは動的な並列処理が可能です。入力配列の要素ごとに対して同じステップで実行できます。また、以下のフィールドが利用できます。
- Iterator (必須)
- ItemsPath
- MaxConcurrency
- ResultPath
- Retry
- Catch
Pass
Passはワークフローの構築、デバッグの際に使用します。入力の処理をせずに出力に渡します。また、以下のフィールドを利用できます。
- Result
- ResultPath
- Parameters
状態(State)には上記の他に共通Stateフィールドと呼ばれるものもあります。
- Type (必須)
TaskやChoice、Waitなどの状態を定義する際に使用します。
- Next
現在の状態を終了し、次の状態に移動します。
- End
trueの場合、実行処理が終了します。
- Comment
人間が解読可能な説明を入力できます。
- InputPath
Taskに渡す入力パス
- OutputPath
出力に渡すパス
以上がAWS Step FunctionsのAmazonステートメント言語で使用する状態(State)の用語解説となります。より詳しい解説はAWS Step Functions開発者ガイドでご確認ください。
まとめ
AWS Step Functionsは視覚的でわかりやすいビジュアルワークフローによって簡単にアプリケーションなどのコンポーネントを調整できます。実行履歴を作成する機能もあるため、トラブルシューティングして素早い修正が可能です。また、スケーリングが自動で行われ、可用性が高いためメンテナンスコストが削減できます。無料の利用枠も付与されているので、試験的に導入しやすいのではないでしょうか。