AWS Step Functions とは?
AWS Step Functionsは、分散アプリケーションやマイクロサービスをワークフロー形式で調整できるサーバーレスサービスです。複雑なビジネスロジックやプロセスを可視化し、簡単に構築・運用できます。
特徴
1. 可視化されたワークフロー
- 状態遷移(State Machine)をフローチャートで表現。
- ワークフロー全体の構造や進行状況をリアルタイムで確認可能。
2. フルマネージド型
- インフラ管理不要。
- 高可用性とスケーラビリティを備え、複雑なプロセスも信頼性を確保。
3. AWSサービスとの統合
- AWS Lambda、DynamoDB、S3、SNS、SQS など、幅広いAWSサービスとシームレスに連携。
4. エラー管理とリトライ
- 自動リトライ、タイムアウト、エラーハンドリングを設定可能。
- エラー発生時の通知や代替処理が簡単に実装できる。
5. 2つのワークフロータイプ
- 標準ワークフロー: 長時間実行(最大1年)、高耐障害性。
- エクスプレスワークフロー: 高スループット、短時間処理(最大5分)。
ステートマシンとは?
1. 概要
ステートマシンは、Step Functionsで定義されるワークフロー全体を指します。
- ワークフローを構成する個々のステップ(状態)をステートとして定義。
- ステート間の遷移や条件分岐を管理。
- JSONまたはYAML形式で構築。
2. ステートのタイプ
ステートタイプ | 説明 | ユースケース例 |
---|---|---|
Task | Lambdaや他のAWSサービスを呼び出す。 | データ処理、ファイル変換。 |
Choice | 条件分岐を実行し、異なるステートに遷移。 | データ内容による分岐処理。 |
Parallel | 複数のステートを並列で実行。 | 複数のファイルを同時に処理。 |
Map | 配列データをループ処理し、各要素に対してステートを実行。 | 配列内の各オブジェクトに対するバッチ処理。 |
Wait | 指定した時間だけ待機。 | 時間経過後の処理や遅延実行。 |
Fail | 実行を失敗として終了し、エラー情報を返す。 | エラー発生時のワークフロー終了。 |
Succeed | 実行を成功として終了。 | 成功時のワークフロー終了。 |
Pass | データをそのまま次のステートに渡す。 | 単純なデータ引き渡し。 |
3. 実装例: Lambda関数の呼び出し
{
"Comment": "Lambdaを呼び出すステートマシン",
"StartAt": "LambdaFunction",
"States": {
"LambdaFunction": {
"Type": "Task",
"Resource": "arn:aws:lambda:region:account-id:function:example-function",
"Next": "SucceedState"
},
"SucceedState": {
"Type": "Succeed"
}
}
}