Step Functions すてっぷふんくしょんず
簡単に言うとこんな感じ!
複数の処理を「順番に」「条件分岐しながら」自動でつなげてくれる司令塔だよ!「A終わったらBへ、失敗したらCへ」みたいな流れをフロー図みたいに組み立てられるAWSのサービスなんだ!
Step Functionsとは
AWS Step Functionsは、Amazonが提供するクラウドサービス(AWS)の一つで、複数の処理ステップを定義・実行・管理するワークフローオーケストレーションサービスです。たとえば「注文を受ける→在庫を確認する→決済する→配送指示を出す」といった一連の処理を、コードではなくフロー図(ステートマシン)として定義して自動実行できます。
各ステップにはAWS Lambda(小さな処理を実行するサーバーレス関数)や他のAWSサービスを組み合わせられ、ステップの成功・失敗・タイムアウトなどに応じて次の動作を柔軟に制御できます。処理が途中で失敗しても、どのステップで何が起きたかを視覚的に追跡できるため、障害の原因調査や再実行もしやすいのが特徴です。
ビジネス的に見ると、「複数のシステムをまたぐ複雑な業務フローを自動化したいけど、繋ぎ合わせの管理が大変」という課題を解決するサービスです。開発者が手動で「AのあとBを呼び出す」ロジックをコードに書く代わりに、Step Functionsがその流れを一元管理してくれます。
ステートマシンの仕組み
Step Functionsの中心概念はステートマシン(State Machine)=状態機械です。業務の各ステップを「状態(State)」として定義し、状態間の遷移ルールを設定します。
| 用語 | 意味 | 例 |
|---|---|---|
| ステートマシン | ワークフロー全体の設計図 | 受注処理フロー全体 |
| ステート(状態) | 個々の処理ステップ | 「在庫確認」「決済処理」 |
| トランジション | 状態から状態への遷移 | 在庫あり→決済へ進む |
| 入力/出力 | 各ステートに渡すデータ | 注文ID・金額など |
| 実行(Execution) | ステートマシンの1回の実行 | 1件の注文処理 |
主なステートの種類
| ステートタイプ | 役割 |
|---|---|
| Task | Lambda等を呼び出して処理を実行 |
| Choice | 条件によって次のステートを分岐 |
| Wait | 指定時間または外部イベントまで待機 |
| Parallel | 複数のステートを同時並行で実行 |
| Map | リストの各要素に同じ処理を繰り返す |
| Succeed / Fail | 正常終了・異常終了を明示 |
覚え方:「タスク・チョイス・ウェイト・パラレル・マップ」
「た・ち・わ・ぱ・ま」=Task / Choice / Wait / Parallel / Map。「たちわぱま」と唱えてみよう!
歴史と背景
- 2016年:AWS re:InventでStep Functionsが発表・リリース。Lambdaが普及する中で「複数のLambdaをどう連携させるか」問題が顕在化したことが背景
- 2017年:AWS SDKとの統合が強化され、Lambda以外のAWSサービス(SNS、SQS等)も直接呼び出せるように
- 2019年:Express Workflows(高速・大量処理向けモード)が追加。従来のStandard Workflowsと使い分けが可能に
- 2021年:200以上のAWSサービスをコードなしで呼び出せるSDK統合(最適化された統合)が大幅拡充
- 2022年以降:ビジュアルデザイナー(Workflow Studio)が強化され、ノーコード・ローコードでのフロー設計が現実的に
Standard vs Express:2つのモードの違い
Step Functionsには用途に応じた2つの動作モードがあります。
Step Functions を使う典型的なシナリオ
【ECサイト注文フロー例】
[注文受付]
↓
[在庫確認] ──── 在庫なし ──→ [入荷待ち通知] → END
↓ 在庫あり
[決済処理] ──── 失敗 ──────→ [エラー通知] → END
↓ 成功
[配送指示]
↓
[完了通知] → END
このようなフローをStep Functionsで定義すると、各ステップの実行状況・エラー・所要時間をAWSコンソールでグラフィカルに確認できます。
関連する規格・RFC
| 規格・仕様 | 内容 |
|---|---|
| Amazon States Language (ASL) | Step FunctionsのステートマシンをJSONで定義するための言語仕様 |
| AWS SAM / CloudFormation | Step FunctionsをIaC(コードでインフラ管理)として定義するためのテンプレート形式 |
| OpenTelemetry | Step Functionsの実行トレースを標準的な観測基盤に連携するための仕様 |
関連用語
- AWS Lambda — 関数単位でコードを実行するサーバーレスコンピューティングサービス。Step Functionsの各ステートから呼び出す処理の主役
- サーバーレス — サーバーの管理を意識せずアプリを構築・実行する設計思想
- EventBridge — AWSのイベント駆動型サービス。特定のイベントをトリガーにStep Functionsを起動する際に組み合わせる
- SQS — メッセージキューサービス。非同期処理の待ち行列としてStep Functionsと連携
- ワークフローエンジン — 業務プロセスの流れを自動制御するソフトウェアの総称。Step FunctionsはAWS版ワークフローエンジン