【エーダブリューエス ステップ ファンクションズ】

AWS Step Functions とは?

最終更新:
💡 AWSの処理をつなぎ、分岐や再試行を管理する

AWSのサーバーレスワークフローサービス。処理を状態として定義し、Lambdaなどのサービス呼び出し、分岐、再試行やエラー時の遷移を組み合わせる。

📌 このページのポイント
注文の処理と、失敗後の処理を定義①在庫確保サービスへ依頼②決済サービスへ依頼在庫を戻す補償処理を呼ぶ③発送登録サービスへ依頼④通知サービスへ依頼Retry:再試行Catch失敗時成功Standard:最長1年 Express:最長5分実行の重複・ログ・連携方式も確認
成功時の流れと、決済の失敗後に補償処理を呼ぶ定義例。Retry/Catchは対象のエラーなどを設定します。補償処理自体は実装が必要で、失敗時に全サービスが自動で巻き戻るわけではありません。
ひよこ ひよこ
Step FunctionsはLambdaをまとめるサービス?
ペンギン先生 ペンギン先生
Lambdaをつなぐ用途もあるけど、それだけではないよ。AWSサービスなどに処理を依頼し、その順番や分岐をステートマシンとして定義するんだ。状態の中にはサービスを呼ぶTaskだけでなく、条件を判断したり待機したりするものもあるよ。
ひよこ ひよこ
関数から次の関数を呼ぶのと何が違うの?
ペンギン先生 ペンギン先生
処理の流れとエラー時の制御を、ワークフロー側で管理できるよ。対象のエラーが起きたらRetryで再試行し、解決しなければCatchで別の状態へ進む、といった定義ができる。ただし再試行回数や対象エラー、移動先は設定が必要で、どんな失敗も自動で直すわけではないんだ。
ひよこ ひよこ
注文処理にも使える?
ペンギン先生 ペンギン先生
在庫を確保し、決済して、発送を登録して通知する流れが例になるよ。決済が失敗したら、確保した在庫を戻す補償処理を定義することもできる。ただし在庫戻しの処理自体はアプリ側で実装し、失敗した場合の対応も考える必要がある。自動的に全サービスが巻き戻る仕組みではないよ。
ひよこ ひよこ
StandardとExpressはどう違うの?
ペンギン先生 ペンギン先生
Standardは最長1年の実行を扱い、実行履歴を確認できる。Expressは高頻度のイベント処理などに向き、最長5分で、「1秒以内」という制限ではないよ。Expressの履歴確認にはログ設定が関係するし、ジョブの完了待ちやコールバック待ちの連携方式は使えない。時間だけで選ばないことが大切だね。
ひよこ ひよこ
再試行で決済が二重にならない?
ペンギン先生 ペンギン先生
Standardの実行モデルでも、定義したRetryでは再実行されるよ。非同期Expressは少なくとも1回、同期Expressは最大1回という実行モデルで、重複の扱いが異なる。外部サービスの処理まで一括して「絶対に1回」と保証すると考えず、注文IDなどを使って同じ要求を重ねても二重処理しない設計を確認しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Step Functions」って出てきたら「AWSの処理の流れと分岐・再試行を管理するサービス」と思えばだいたいOK!
📖 おまけ:英語の意味
「AWS Step Functions」 = AWSの処理ステップをつなぐサービス名
💬 Stepは処理の一手順として捉えよう。名前にFunctionsとあっても、各ステップがすべてLambda関数になるわけではないよ。

参考資料

← 用語集にもどる