「AWS Black Belt Online Seminar AWS Step Functions」の自分向けメモ
Step Functions使ったことあるレベルの人向け
Step Functions概要
- マイクロサービスをオーケストレートするサービス
- 各サービスをステートマシンと呼ばれる仕組みでつなぐ
- 実行履歴のログトレースが可能
ステートマシン
- ASL(Amazon States Language)と呼ばれるJSON形式の言語で定義されるワークフロー
- ASLチェックツールがある
- 作成したステートマシンは複数種類の同時実行が可能
ステートマシンの起動方法は以下
- Amazon CloudWatch Events
- Amazon API Gateway
- AWSコンソール
- AWS CLI
- AWS Lambda
- EC2に実装したアプリ
ステートマシンから実行可能なサービスは以下
- AWS Lambda
- Amazon DynamoDB
- AWS Batch
- Amazon ECS
- Amazon SNS
- Amazon SQS
- AWS Glue
- Amazon SageMaker
Activity
- サーバー等のアプリからポーリングが可能
- アプリから死活監視を行うことが可能
データの入出力
InputPath
- 渡された入力データを取捨選択し、State内で利用する
- 取得しなかった情報は後続のStateに渡らない?
Parameters
- 入力データを生成し、State内で利用する
- JSON形式で生成可能
ResultPath
- Stateの実行結果を受け取るキーを指定する
- 入力データと実行結果をマージして後続のStateに渡す
- Stateの実行結果を受け取るキーを指定しなかった場合、実行結果のみを後続のStateに渡す
- InputPathで取得しなかった情報でも、指定すれば後続のStateに渡せる?
OutputPath
- 後続のStateに渡す情報を取捨選択する
- 未指定の場合はResultPathが全て後続のStateに渡る
その他
- Comment:任意のコメントを記述できる
- StartAt:最初に実行するStateを指定する
- TimeoutSeconds:ステートマシン全体のタイムアウト秒を指定する
- Version:ASLのバージョン
- States:Stateを記述する
Stateの記述
Stateの種類
Task
- 基本的なStateでLambdaやDynamoDB、SNSを呼び出す
- Parametersで呼び出すサービスに渡す情報をセットする
Wait
- 指定された時間待機した後、次のStateに移る
- 待機時間秒や待機期限日時などで指定できる
Pass
- 何もせずに次のStateに移る
Parallel
- 並列にStateを実行する
- 並列実行したStateが1つでも失敗になるとParallel配下のStateが全て失敗扱いになる
- Branches内にStartAtとStatesを複数記述する
Choice
- 指定した条件にマッチするか、それ以外(Default)かで分岐させる
- 条件指定は複数可能
- 多くの比較演算子が利用可能
- 異なる型(数値と文字列)の比較はできない
- StringEqualsで文字列としての数値の比較はできない(NumericEqualsを使う)
Fail
- ステートマシンの実行を失敗として終了させる
Succeed
- ステートマシンの実行を成功として終了させる
エラー判定
- タイムアウトやState失敗などエラー内容を区別できる
- 呼び出したLambadaのエラー内容を区別することも可能
Retry
- Task、ParallelではRetryが指定でき、エラー時に再試行が可能
Catch
- Task、ParallelではCatchが指定でき、エラー時に遷移させるStateを指定可能
実行状況の確認
- AWSコンソールからStateごとの実行結果の確認が可能(エラー内容も確認できる)
- 実行結果の変化をトリガーにCloudWatch Eventにイベント発行が可能
- メトリクス収集も可能
- ExecutionTime:実行時間
- ExecutionThrottled:スロットリングされた実行数
- ExecutionAborted:中断された実行数
- ExecutionFailed:失敗した実行数
- ExecutionStarted:開始された実行数
- ExecutionSucceeded:正常終了した実行数
- ExecutionTimedOut:タイムアウトした実行数
補足や料金
料金
- 状態遷移回数での従量課金
- 状態遷移:Start⇒State、State⇒State、State⇒Endをそれぞれ1回とカウント
- 4000回/月は無料
AWS Step Functions Local
- ローカル環境でStep Functionsのテストができる
他サービスとの使い分け
SQS
- サービス間のメッセージを受け渡す点は同じ
- スケーラブルな要求ならSQS
- 処理の追跡が必要であればStep Functions
SWF
- ワークフロー制御する点は同じ
- 高機能なことをするならSWF
- 新規開発するならStep Functions
まとめ
- アプリの構築が容易、構成を可視化
- 余分なコーディングなしでアプリの構成できる
- エラー処理も構築できかつトレース可能