AWS Step Functions
開発者ガイド

ステートマシンデータ

ステートマシンのデータは、次の形式です。

  • ステートマシンへの最初の入力

  • 状態間で渡されるデータ

  • ステートマシンからの出力

このセクションでは、ステートマシンのデータを AWS Step Functions でフォーマットして使用する方法について説明します。

データ形式

ステートマシンのデータは、JSON テキストで表されるため、JSON によりサポートされる任意のデータ型を使用して値を指定できます。

注記

  • JSON テキスト形式の数値は、JavaScript セマンティクスに準拠します。これらの数値は通常、倍精度 IEEE-854 値に対応しています。

  • 有効な JSON テキストは、スタンドアロン、引用符で区切られた文字列、オブジェクト、配列、数値、ブール値、null です。

  • 状態の出力は、次の状態への入力になります。ただし、「入力および出力処理」を使用することで、状態が入力データのサブセットでのみ機能するように制限することができます。

ステートマシンの入出力

実行を開始するときに StartExecution アクションにデータを渡すか、Step Functions コンソールを使用して初期データを渡すことにより、AWS Step Functions に初期入力データを与えることができます。初期データは、ステートマシンの StartAt 状態に渡されます。入力が提供されない場合、デフォルトは空のオブジェクト ({}) です。

実行の出力は、最後の状態 (terminal) により返されます。この出力は、実行の結果に JSON テキストとして表示されます。外部呼び出し元を使用して、実行履歴から実行結果を取得できます (DescribeExecution アクションなど)。実行結果は、Step Functions コンソールで確認できます。

状態の入出力

各状態の入力は、前の状態の JSON テキストで構成されます。または、StartAt 状態の場合、実行への入力で構成されます。特定のフロー制御状態は、その出力への入力をエコーします。

次の例では、ステートマシンが 2 つの数値を同時に追加します。

  1. Lambda 関数を定義します。

    function Add(input) { var numbers = JSON.parse(input).numbers; var total = numbers.reduce( function(previousValue, currentValue, index, array) { return previousValue + currentValue; }); return JSON.stringify({ result: total }); }
  2. ステートマシンを定義します。

    { "Comment": "An example that adds two numbers together.", "StartAt": "Add", "Version": "1.0", "TimeoutSeconds": 10, "States": { "Add": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:Add", "End": true } } }
  3. 次の JSON テキストで実行を開始します。

    { "numbers": [3, 4] }

    Add 状態が JSON テキストを受け取り、Lambda 関数に渡します。

    Lambda 関数は、計算の結果をその状態に返します。

    状態は、その出力で次の値を返します。

    { "result": 7 }

    Add はステートマシンの最終状態でもあるため、この値はステートマシンの出力として返されます。

    最終状態が出力を返さない場合、ステートマシンは空のオブジェクト ({}) を返します。

詳細については、「Step Functions の入出力処理」を参照してください。