こんにちは~ 浮田です。
「Step Functions、名前は聞くけど結局なに?」「Lambda と何が違うの?」
この記事は、そんな状態から 15分で全体像をつかむための地図です。
ここでは「何者で・いつ使い・何から学ぶか」だけに集中します。
地図を持たずに歩き始めると、AWS は確実に迷子になるので。
■ 1. Step Functions を一言でいうと
「複数の処理を、決まった順番・条件で動かしてくれるライン全体の制御役」です。
工場の生産ラインを思い浮かべてください。
部品が流れてきて、組み立て、検査、梱包、発送、と各工程を順に通っていく。
ある工程が止まればライン全体が止まる。不良品が出たらはじいてやり直す
——このライン全体を制御するのが Step Functions です。
AWS 的な言い方をすると「ワークフローオーケストレーションサービス」です。
処理の流れ(ワークフロー)を ASL(Amazon States Language)という JSON ベースの言語で定義すると、その通りに実行し、今どこまで進んだか・どこで失敗したかを全部記録してくれます。
■ 2. 「ないと困る」3つの瞬間
Step Functions が刺さるのは、こういう瞬間です。
● 瞬間①: 処理が3つ以上つながったとき
「A をやってから B、成功したら C」。これを Lambda の中から次の Lambda を呼ぶ形で書くと、流れがコードの中に埋もれて、全体像が誰にも見えなくなります。Step Functions なら流れが「図」として見える。仕様書がそのまま動いているようなものです。
● 瞬間②: 「途中で失敗したらどうする?」と聞かれたとき
決済は済んだのにメールが飛ばなかったら? リトライは? 補償処理(返金)は? ——自前で書くと if と try-catch の沼です。Step Functions はリトライ・エラー分岐・タイムアウトが宣言的に書ける(コードではなく設定として書ける)のが最大の強みです。
● 瞬間③: 「あの注文、いまどうなってる?」と聞かれたとき
Step Functions の実行履歴は、1件1件「どのステップで・どんなデータで・何秒かかったか」が自動で残ります。深夜のログ漁りからの解放です。
逆に、単発の処理1個だけなら Step Functions は不要です(Lambda 単体で十分)。
「つながり」が生まれたときが Step Functions の出番、と覚えてください。
■ 3. 最低限の用語 — 3つだけ
|
用語 |
意味 |
たとえるなら |
|
ステートマシン |
ワークフローの定義(流れ図の設計図) |
ラインの設計図(工程表) |
|
ステート |
流れ図の中の1つの箱(1ステップ) |
1つの工程(組み立て・検査…) |
|
実行(Execution) |
設計図に入力を与えて1回動かしたもの |
製品を1個流すこと |
ステートには種類があります。
よく使うのは6つ:
- Task — 実際の仕事をする(Lambda や他の AWS サービスを呼ぶ)
- Choice — 条件分岐(if 文)
- Wait — 待つ(5秒でも3日でも)
- Parallel — 同時に複数の処理を走らせる
- Map — 配列の各要素に同じ処理を繰り返す(forEach)
- Succeed / Fail — 正常終了・異常終了
プログラミングの「順番(逐次)・分岐・反復」がそのまま箱になっている、と思えば OK です。
ので、まずは小規模なプロジェクトで型を試してみるのが現実的な第一歩ではないでしょうか。
■ 4. 誤解しやすいポイント — よくある勘違い3つ
● 勘違い①「Step Functions = Lambda をつなぐもの」
半分正解、半分もったいない。
実は Step Functions は Lambda を書かずに AWS のサービスを直接呼べます。
(DynamoDB に書き込む、SQS に送る、Bedrock で生成 AI を呼ぶ…その数 220 以上の AWS サービス)
「キューに入れるだけの Lambda」「DB に書くだけの Lambda」
こういう"橋渡しだけの Lambda"は、Step Functions の直接統合で消せるんです。
コードが減る = バグも保守も減る。
● 勘違い②「リアルタイム処理に使うもの」
Step Functionsの主戦場は「流れの管理」です。
ミリ秒を争う処理そのものではなく、処理と処理のあいだを引き受けます。
何日も待つ承認フロー、数時間のバッチ——こういう「長い流れ」こそ得意分野。
● 勘違い③「料金が高そう」
標準ワークフローの課金は状態遷移(箱から箱へ進む)ごとに約 $0.025/1,000回。
月 4,000 遷移まで無料枠があります。学習用途ならほぼ 0 円です。
お金がかかるのは Step Functions 自体より「呼び出す先」。
たとえば Bedrock で生成 AI を呼べば、そちらの料金が本体になります。
■ 5. 似たサービスとの違い — 30秒版
|
サービス |
役割 |
Step Functions との関係 |
|
Lambda |
1つの処理を実行する作業員 |
Step Functions が指示し、Lambda が手を動かす。対立ではなく分業 |
|
SQS |
処理の依頼を貯める「順番待ちの列」 |
流れの管理はできない。Step Functions と組み合わせて使う |
|
EventBridge |
「○○が起きたら△△を起動」の配電盤 |
起動のきっかけ担当。起動された後の流れは Step Functions 担当 |
「きっかけは EventBridge、流れは Step Functions、個々の仕事は Lambda か直接統合」
—この役割分担が頭に入れば、AWS のイベント駆動設計の骨格は理解できたも同然です。
■ 6. 学習ロードマップ — この順で迷わない
Step Functions 学習は「読む → 動かす → 式を書く → 組む」の4段階で進めるのがいいと思います。
STEP 1【読む】 入門記事で概念とデータの流れを理解する(1〜2時間)
↓
STEP 2【動かす】 コンソールで最初の1本を動かす(30分)
↓ → ハンズオン編: Lambda なしで動くワークフローを作る
STEP 3【式を書く】 データ加工の言語 JSONata をドリルで練習(すきま時間)
↓ → JSONata編 + ブラウザ練習アプリ「JSONata ノック道場」
STEP 4【組む】 パターン別の「カタ」を1つずつ実機で組む
→ Step Functions道場 ハンズオン
ポイントは2つ。
- 最初の1本は今週中に動かすこと。
- データの流れ(入出力)から逃げないこと。
概念だけ積んでも腹落ちしません。Hello World(5秒待って挨拶するだけ)でいい。「作って・動かして・実行履歴を見る」を1周した人から理解が始まります。
Step Functions 最大のつまずきポイントは、ステート間を流れる JSON の加工です。ここを制する言語が JSONata。読むだけでは身につかないので、手を動かすドリル(ノック道場)を用意しています。
■ 7. まとめ
-
Step Functions は処理の流れを制御するサービス。処理が3つ以上つながったら出番
-
強みは「流れが見える・失敗に強い・記録が残る」の3点セット
-
Lambda の対立ではなく分業。むしろ Lambda を書かずに済ませる方向に進化している
- 学習は「読む → 動かす → 式を書く → 組む」の順。最初の1本は今週中に
次は実際に手を動かしましょう。
コンソールだけで、コードを1行も書かずに「動くワークフロー」を作ります。