概要
- AWSが提供するサーバーレスオーケストレーションサービス。
- 分散アプリケーション・マイクロサービスを「ステートマシン」と呼ばれる仕組みでオーケストレートする。
- 定義したステートマシンはAWS コンソールから「ワークフロー」という形式で可視化できる。
用語
ステート
- 状態または一つの作業単位を表す。
ステートマシン
-
ステートからなるフロー(ワークフロー)を指す。
-
ASL (Amazon States Language) と呼ばれるJSON 形式の言語で定義する。
-
ASL例
{ "Comment": "A Hello World example of the Amazon States Language using Pass states", "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "Result": "Hello", "Next": "World" }, "World": { "Type": "Pass", "Result": "World has been updated!", "End": true } } }
-
Comment
:コメント(概要等) -
StartAt
:最初に実行するState -
States
:ステートマシンを構成するStateを定義する。複数のStateの指定が可能。-
Task
:処理の単位 -
Choice
:条件分岐 -
Fail/Succeed
:失敗または成功として停止 -
Pass
:入力を単純に出力に渡す、または一部の固定データを出力 -
Wait
:処理停止時間 -
Parallel
:並列処理 -
Map
:配列要素ごとに処理を実行
-
-
Task
例
フィールド | 説明 |
---|---|
Name |
タグ |
Resource ※必須 |
URI/サービスARN |
Parameters |
Stateに渡すJSON形式の値 |
ResultPath |
Stateの実行結果を受け取るフィールド |
Retry |
Stateでランタイムエラーが発生した際の再試行ポリシー |
Catch |
Stateでランタイムエラーが発生し、再試行ポリシーが使い果たされたか定義されていない場合に実行される処理 |
TimeoutSeconds |
処理をタイムアウトさせる時間 |
など
ワークフロー
- ステートマシンを作成する際に以下いずれかのワークフローを選択する。
-
標準
- 実行レート:毎秒 2,000
- 状態遷移レート:毎秒4,000
- 課金形態:状態遷移ごと
-
Express※大量データ処理向き
- 実行レート:毎秒100,000
- 状態遷移レート:ほぼ無制限
- 課金形態:実行回数と実行期間
-
標準
サポートAWS サービス
-
次のようなサービスとの連携をサポート
- Lambda
- DynamoDB
- SNS
- SQS
- Batch
- ECS
など
-
連携パターン
- リクエストレスポンス
* リソースに対してHTTP応答を要求。ジョブの完了を待たない。 - ジョブの実行
* AWS Batchなどとの統合の場合にリクエストが完了するのを待ってから次のStateに遷移 - コールバックまで待機
* リソースからタスクトークンが返されるまで処理を中断
- リクエストレスポンス
ステートマシン実行方法
- API呼び出し
- マネジメントコンソール
- CloudWatch Events
- API Gateway
- AWS CLI
- SDK
- ステート(ネストして実行)