概要
注文の受付から処理までの簡単なワークフローをAWS Step Functionsで作成します。実際にコードをコピーして簡単に手を動かしてこんな感じなんだ!というイメージを掴んでもらえるようにしました。中身は非常に薄いですし、この記事の内容は実務レベルではありません。
構築内容
Lambdaを使った注文の受付から処理までのワークフロー
前提条件
- AWSアカウントを持っていること
- AWSマネジメントコンソールにアクセスできること
対象者
- 初めてStepfunctionを触る人
ワークフローの流れ
- 注文受付
- 在庫確認
- 在庫あり → 支払い処理へ
- 在庫なし → 注文キャンセルへ
- 支払い処理
- 成功 → 注文完了へ
- 失敗 → 注文キャンセルへ
- 注文完了 or 注文キャンセル
手順
Step1. Lambda関数の作成
AWSマネジメントコンソールから
起動経路 :「Lambda」>「関数の作成」>「一から作成」を選択し、以下の設定で3つの関数を作成
a. 在庫確認関数(check_inventory)
- 関数名: check_inventory
- ランタイム: Python 3.12
- 「関数の作成」をクリック
def lambda_handler(event, context):
# 在庫をランダムに確認する簡単なロジック
import random
has_stock = random.choice([True, False])
return {"hasStock": has_stock}
b. 支払い処理関数(process_payment)
- 関数名: process_payment
- ランタイム: Python 3.12
- 「関数の作成」をクリック
def lambda_handler(event, context):
# 支払いをランダムに処理する簡単なロジック
import random
payment_successful = random.choice([True, False])
return {"paymentSuccessful": payment_successful}
c. 注文完了関数(complete_order)
- 関数名: complete_order
- ランタイム: Python 3.12
- 「関数の作成」をクリック
def lambda_handler(event, context):
return {"message": "注文が完了しました。"}
Step2. ステートマシンの作成
- AWS Step Functions コンソールを開く
- 「ステートマシンの作成」をクリック
- 「コードでワークフローを記述する」を選択
- 以下のJSONコードの作成
コードを貼り付けたら、以下の点に注意してください- regionを自分のリージョン(例:ap-northeast-1)に置き換えます
- account-idを自分のAWSアカウントIDに置き換えます。
{
"Comment": "シンプルな注文処理システム",
"StartAt": "在庫確認",
"States": {
"在庫確認": {
"Type": "Task",
"Resource": "arn:aws:lambda:region:account-id:function:check_inventory",
"Next": "在庫チェック"
},
"在庫チェック": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.hasStock",
"BooleanEquals": true,
"Next": "支払い処理"
},
{
"Variable": "$.hasStock",
"BooleanEquals": false,
"Next": "注文キャンセル"
}
]
},
"支払い処理": {
"Type": "Task",
"Resource": "arn:aws:lambda:region:account-id:function:process_payment",
"Next": "支払いチェック"
},
"支払いチェック": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.paymentSuccessful",
"BooleanEquals": true,
"Next": "注文完了"
},
{
"Variable": "$.paymentSuccessful",
"BooleanEquals": false,
"Next": "注文キャンセル"
}
]
},
"注文完了": {
"Type": "Task",
"Resource": "arn:aws:lambda:region:account-id:function:complete_order",
"End": true
},
"注文キャンセル": {
"Type": "Fail",
"Cause": "注文がキャンセルされました。"
}
}
}
入力後の画像
5. 「次へ」をクリック
6. ステートマシンの名前を入力(例:SimpleOrderWorkflow)
7. 実行ロールで「新しいロールを作成」を選択
8. 「ステートマシンの作成」をクリック
Step3. ステートマシンのテスト実行
- ステートマシンの詳細ページに移動します
- 作成したステートマシンの詳細ページで「実行の開始」をクリック
- 実行名を入力
- 入力は空のままでOK({})
- 「実行の開始」をクリック
実行が開始され、ワークフローの視覚的表現が表示されます。各ステップが実行されるにつれて、対応する部分が緑色(成功)または赤色(失敗)に変わります
成功
失敗
- 実行結果を確認し、ワークフローの動きを観察
複数回実行して、異なる結果(在庫あり/なし、支払い成功/失敗)を確認してください
まとめ
この記事では
- 基本的なAWS Step Functionsのワークフロー作成
- Lambda関数との連携
- 条件分岐の使用
- 成功と失敗の状態の設定
これをベースに、より複雑なワークフローや実際のビジネスロジックを組み込んだステートマシンを作成できます