SFN値のうけわたし。PASS

AWS Step Functionsで Pass ステートを使って定義した値を順番に Choice や他の Pass ステートに受け渡す方法を示します。このプロセスでは、ResultPathInputPath を適切に設定してデータを順次渡していきます。

以下に、具体的な例を示します:

ステートマシンの構造

  1. InitializeState: 初期変数を設定する Pass ステート
  2. ChoiceState: 初期化された変数に基づいて条件分岐を行う Choice ステート
  3. SuccessPass / FailurePass: Choice ステートの結果に基づいて選択される Pass ステート

ステートマシンの定義

{
  "Comment": "State machine to pass values through Pass and Choice states",
  "StartAt": "InitializeState",
  "States": {
    "InitializeState": {
      "Type": "Pass",
      "Result": {
        "variable": 42,
        "status": "initialized"
      },
      "ResultPath": "$.initData",
      "Next": "ChoiceState"
    },
    "ChoiceState": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.initData.variable",
          "NumericGreaterThanEquals": 50,
          "Next": "SuccessPass"
        },
        {
          "Variable": "$.initData.variable",
          "NumericLessThan": 50,
          "Next": "FailurePass"
        }
      ],
      "Default": "FailurePass"
    },
    "SuccessPass": {
      "Type": "Pass",
      "Result": {
        "message": "Success: Value is greater than or equal to 50"
      },
      "ResultPath": "$.resultData",
      "End": true
    },
    "FailurePass": {
      "Type": "Pass",
      "Result": {
        "message": "Failure: Value is less than 50"
      },
      "ResultPath": "$.resultData",
      "End": true
    }
  }
}

説明

  1. InitializeState:
  • Pass ステートで { "variable": 42, "status": "initialized" } を出力。
  • ResultPath を使用して出力を $.initData に保存。
  • 次のステートとして ChoiceState に遷移。
  1. ChoiceState:
  • $.initData.variable の値に基づいて条件分岐を行う。
  • 値が 50 以上であれば SuccessPass ステートに遷移。
  • 値が 50 未満であれば FailurePass ステートに遷移。
  1. SuccessPass:
  • Pass ステートで成功メッセージを { "message": "Success: Value is greater than or equal to 50" } として設定。
  • ResultPath を使用して出力を $.resultData に保存。
  • ステートマシンを終了。
  1. FailurePass:
  • Pass ステートで失敗メッセージを { "message": "Failure: Value is less than 50" } として設定。
  • ResultPath を使用して出力を $.resultData に保存。
  • ステートマシンを終了。

詳細

  • ResultPath: これは、ステートの出力がどこに保存されるかを指定します。例えば、$.initData に保存されます。
  • InputPath: 必要に応じて、次のステートが入力データのどの部分を受け取るかを指定できます。

実行例

このステートマシンを実行すると、初期値 variable が 42 なので、$.initData.variable は 50 未満となり、FailurePass ステートに遷移して終了します。メッセージは以下のようになります:

{
  "resultData": {
    "message": "Failure: Value is less than 50"
  }
}

こうして Pass ステートを使って値を次の ChoicePass に受け渡す方法がわかるかと思います。これを基に、より複雑なステートマシンを構築することも可能です。必要に応じて Task ステートや他のステートも組み合わせることで、柔軟なワークフローを設計できます。

コメント

タイトルとURLをコピーしました