- Step Functionsはサーバーレスワークフローを視覚的に設計・実行できるAWSサービス
- Lambda・S3・SESとの連携で実用的なパイプラインを構築可能
- SES案件では月単価70〜100万円レンジで需要が増加中
「Lambdaを複数組み合わせた処理の管理が煩雑」「非同期処理のエラーハンドリングが難しい」——サーバーレスアーキテクチャを扱うSESエンジニアなら、こうした課題に直面したことがあるのではないでしょうか。
AWS Step Functionsは、複数のAWSサービスをステートマシンとして統合し、ワークフローを視覚的に設計・管理できるサービスです。 Lambda単体では複雑になりがちなオーケストレーション処理を、宣言的に記述できます。
- Step Functionsの基本概念と2つのワークフロータイプ
- ASL(Amazon States Language)の書き方
- Lambda・S3・SESとの連携パターン
- エラーハンドリングとリトライ戦略
- SES案件での活用シーンと単価相場
AWS Step Functionsとは?
AWS Step Functionsは、ビジュアルワークフローサービスです。AWSの各サービスをステップとして組み合わせ、複雑なビジネスロジックを状態遷移図(ステートマシン)として定義・実行できます。
ステートマシンの基本概念
Step Functionsのワークフローはステートマシンとして表現されます。
主要なステートタイプ:
| ステート | 機能 | 用途 |
|---|---|---|
| Task | AWSサービスの呼び出し | Lambda実行、DynamoDB操作等 |
| Choice | 条件分岐 | 入力値による処理の振り分け |
| Parallel | 並列実行 | 独立した処理の同時実行 |
| Map | 配列の反復処理 | リスト内の各要素に処理を適用 |
| Wait | 待機 | 指定時間の待機 |
| Pass | データ変換 | 入出力のフィルタリング・変換 |
| Succeed/Fail | 終了状態 | 正常終了 / 異常終了 |
Standard vs Express ワークフロー
Step Functionsには2つの実行モードがあります:
| 特性 | Standard | Express |
|---|---|---|
| 最大実行時間 | 1年 | 5分 |
| 実行保証 | Exactly-once | At-least-once / At-most-once |
| 料金体系 | 状態遷移ごと | 実行数×時間 |
| 実行履歴 | 90日間保持 | CloudWatch Logsへ出力 |
| 適用シーン | 長時間バッチ、承認フロー | API統合、リアルタイム処理 |
選択の指針: 処理時間が5分以内で高頻度実行ならExpress、それ以外はStandardを選択します。
Step Functionsの基本的な使い方
ASL(Amazon States Language)の書き方
Step FunctionsのワークフローはASLというJSON形式の言語で定義します。
{
"Comment": "注文処理ワークフロー",
"StartAt": "ValidateOrder",
"States": {
"ValidateOrder": {
"Type": "Task",
"Resource": "arn:aws:lambda:ap-northeast-1:123456789:function:validate-order",
"Next": "CheckInventory",
"Catch": [{
"ErrorEquals": ["ValidationError"],
"Next": "OrderFailed"
}]
},
"CheckInventory": {
"Type": "Choice",
"Choices": [{
"Variable": "$.inStock",
"BooleanEquals": true,
"Next": "ProcessPayment"
}],
"Default": "OutOfStock"
},
"ProcessPayment": {
"Type": "Task",
"Resource": "arn:aws:lambda:ap-northeast-1:123456789:function:process-payment",
"Next": "SendConfirmation"
},
"SendConfirmation": {
"Type": "Task",
"Resource": "arn:aws:lambda:ap-northeast-1:123456789:function:send-confirmation",
"End": true
},
"OutOfStock": {
"Type": "Task",
"Resource": "arn:aws:lambda:ap-northeast-1:123456789:function:notify-out-of-stock",
"End": true
},
"OrderFailed": {
"Type": "Fail",
"Error": "OrderProcessingFailed",
"Cause": "注文バリデーションに失敗しました"
}
}
}
マネジメントコンソールでのビジュアル設計
2026年時点のStep Functionsコンソールでは、Workflow Studioというビジュアルエディタが利用できます。
- ドラッグ&ドロップでステートを配置
- 接続線で状態遷移を定義
- 各ステートのプロパティをGUIで設定
- リアルタイムにASLを生成・プレビュー
ビジュアルエディタで設計 → ASLを確認・調整 → デプロイという流れが効率的です。
Lambda・S3・SESとの連携パターン
データ処理パイプライン
S3にアップロードされたCSVファイルを処理するパイプライン:
S3 Upload Event → Step Functions起動
→ [Lambda] CSVパース&バリデーション
→ [Choice] バリデーションOK?
→ Yes: [Lambda] DynamoDBに登録 → [Lambda] 完了通知
→ No: [Lambda] エラーレポート生成 → [SES] 管理者にメール通知
{
"StartAt": "ParseCSV",
"States": {
"ParseCSV": {
"Type": "Task",
"Resource": "arn:aws:lambda:ap-northeast-1:123456789:function:parse-csv",
"InputPath": "$.detail",
"ResultPath": "$.parsed",
"Next": "ValidateData"
},
"ValidateData": {
"Type": "Choice",
"Choices": [{
"Variable": "$.parsed.isValid",
"BooleanEquals": true,
"Next": "SaveToDB"
}],
"Default": "NotifyError"
},
"SaveToDB": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:putItem",
"Parameters": {
"TableName": "ProcessedData",
"Item": { "id": { "S.$": "$.parsed.id" } }
},
"Next": "NotifySuccess"
},
"NotifySuccess": {
"Type": "Task",
"Resource": "arn:aws:lambda:ap-northeast-1:123456789:function:notify-success",
"End": true
},
"NotifyError": {
"Type": "Task",
"Resource": "arn:aws:lambda:ap-northeast-1:123456789:function:notify-error",
"End": true
}
}
}
メール通知ワークフロー
Amazon SES(Simple Email Service)と連携したメール通知フロー:
- ユーザー登録 → ウェルカムメール送信
- 注文完了 → 注文確認メール → 3日後にレビュー依頼メール
- バッチ処理完了 → 管理者への結果レポートメール
Wait ステートを使えば、「3日後に自動メール」のような時間ベースのワークフローも簡単に構築できます。
エラーハンドリングとリトライ戦略
Catch/Retryの設定
Step Functionsの強力なエラー処理機能:
{
"ProcessPayment": {
"Type": "Task",
"Resource": "arn:aws:lambda:...",
"Retry": [{
"ErrorEquals": ["States.TaskFailed", "Lambda.ServiceException"],
"IntervalSeconds": 3,
"MaxAttempts": 3,
"BackoffRate": 2.0
}],
"Catch": [{
"ErrorEquals": ["States.ALL"],
"ResultPath": "$.error",
"Next": "HandlePaymentError"
}],
"Next": "SendConfirmation"
}
}
Retryのベストプラクティス:
- 一時的なエラー(ネットワークタイムアウト等)にはRetryを設定
- BackoffRateは2.0(指数バックオフ)を推奨
- MaxAttemptsは3〜5回が一般的
タイムアウトとフォールバック
{
"LongRunningTask": {
"Type": "Task",
"Resource": "arn:aws:lambda:...",
"TimeoutSeconds": 300,
"HeartbeatSeconds": 60,
"Catch": [{
"ErrorEquals": ["States.Timeout"],
"Next": "TimeoutFallback"
}]
}
}
HeartbeatSecondsを設定すると、Lambda関数が定期的にハートビートを送信する必要があり、応答がない場合はタイムアウトとして処理されます。
SES案件での活用シーンと求められるスキル
Step Functionsが求められるSES案件の典型例:
- EC系: 注文処理ワークフロー、在庫管理、配送ステータス管理
- FinTech系: 決済処理、KYC/AML審査フロー
- データ基盤系: ETLパイプライン、データ品質チェック
- 業務システム系: 承認ワークフロー、ドキュメント処理
求められるスキルセット:
- AWS Lambda + Step Functionsの実装経験
- ASLの読み書き
- サーバーレスアーキテクチャの設計
- CloudFormation / CDKでのIaCスキル
- DynamoDB, S3, SQS, SNS等の関連サービス知識
Step Functions案件の単価相場と需要
Step Functionsのスキルを持つエンジニアの単価相場:
| 経験レベル | 月単価レンジ | 備考 |
|---|---|---|
| Lambda + Step Functions 1年 | 65〜80万円 | 基本的なワークフロー構築 |
| サーバーレス設計 3年 | 80〜100万円 | アーキテクチャ設計を含む |
| テックリード 5年+ | 100〜120万円 | チーム指導・技術選定 |
Step Functions単体というよりも、サーバーレスアーキテクチャ全体の設計力が評価されます。Lambda・DynamoDB・API Gatewayなどの周辺サービスとセットで習得するのが効率的です。
SES BASEでAWS関連案件を検索して、最新の需要動向を確認してみてください。

まとめ
AWS Step Functionsは、サーバーレスワークフローの標準的な選択肢として、SES案件でも需要が拡大しています。
- ステートマシンベースでワークフローを視覚的に設計
- Standard / Expressの2モードを用途で使い分け
- Lambda・S3・SESとの連携パターンが豊富
- Retry/Catchで堅牢なエラーハンドリング
- SES案件では月単価70〜120万円レンジ
AWSのサーバーレスエコシステムに携わるエンジニアにとって、Step Functionsは必修スキルです。
参考文献:
関連記事: