1
1

3分でできるAWS Stepfunction構築(超簡易var)

Last updated at Posted at 2024-08-24

概要

注文の受付から処理までの簡単なワークフローをAWS Step Functionsで作成します。実際にコードをコピーして簡単に手を動かしてこんな感じなんだ!というイメージを掴んでもらえるようにしました。中身は非常に薄いですし、この記事の内容は実務レベルではありません。

構築内容

Lambdaを使った注文の受付から処理までのワークフロー

前提条件

  • AWSアカウントを持っていること
  • AWSマネジメントコンソールにアクセスできること

対象者

  • 初めてStepfunctionを触る人

ワークフローの流れ

  1. 注文受付
  2. 在庫確認
    • 在庫あり → 支払い処理へ
    • 在庫なし → 注文キャンセルへ
  3. 支払い処理
    • 成功 → 注文完了へ
    • 失敗 → 注文キャンセルへ
  4. 注文完了 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. ステートマシンの作成

  1. AWS Step Functions コンソールを開く
  2. 「ステートマシンの作成」をクリック
  3. 「コードでワークフローを記述する」を選択
  4. 以下の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": "注文がキャンセルされました。"
    }
  }
}

入力後の画像
image.png
5. 「次へ」をクリック
6. ステートマシンの名前を入力(例:SimpleOrderWorkflow)
7. 実行ロールで「新しいロールを作成」を選択
image.png
8. 「ステートマシンの作成」をクリック

Step3. ステートマシンのテスト実行

  1. ステートマシンの詳細ページに移動します
  2. 作成したステートマシンの詳細ページで「実行の開始」をクリック
  3. 実行名を入力
  4. 入力は空のままでOK({})
  5. 「実行の開始」をクリック
    実行が開始され、ワークフローの視覚的表現が表示されます。各ステップが実行されるにつれて、対応する部分が緑色(成功)または赤色(失敗)に変わります
    成功
    image.png
    失敗
    image.png
  6. 実行結果を確認し、ワークフローの動きを観察
    複数回実行して、異なる結果(在庫あり/なし、支払い成功/失敗)を確認してください

まとめ

この記事では

  • 基本的なAWS Step Functionsのワークフロー作成
  • Lambda関数との連携
  • 条件分岐の使用
  • 成功と失敗の状態の設定
    これをベースに、より複雑なワークフローや実際のビジネスロジックを組み込んだステートマシンを作成できます
1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1