Step Functions の入力および出力処理 - AWS Step Functions

Step Functions の入力および出力処理

変数と JSONata によるステート管理

Step Functions では最近、ステート管理とデータ変換のために変数と JSONata が追加されました。

詳細については、ブログ記事「Simplifying developer experience with variables and JSONata in AWS Step Functions」を参照してください。

Step Functions の実行が JSON 入力を受け取ると、そのデータはワークフローの最初のステートに入力として渡されます。

JSONata では、$states.input からステートの入力を取得できます。ステートマシンの実行は、その初期入力データも コンテキストオブジェクト で提供します。ワークフローのどの時点でも、$states.context.Execution.Input から元のステートマシンの入力を取得できます。

ステートが終了すると、その出力はステートマシン内の直後のステートで使用できるようになります。ステートの出力を変更しない限り、ステートの入力はデフォルトでステートの出力として引き継がれます。後続のステップで必要になる可能性のあるデータは、変数に保存することを検討してください。詳細については、変数を使用したステート間のデータ受け渡し を参照してください。

QueryLanguage に関する推奨事項

新しいステートマシンには JSONata クエリ言語の使用をお勧めします。クエリ言語を指定しないステートマシンでは、下位互換性のために JSONPath がデフォルトで使用されます。ステートマシンや個々のステートで JSONata を使用するように明示的に設定にする必要があります。

JSONata を使用した入出力の処理

JSONata 式を使用すると、データを選択して変換できます。Arguments フィールドで、アクションに送信するデータをカスタマイズできます。Output フィールドで、結果をカスタムのステートの出力に変換できます。Assign フィールドで、データを変数に保存することもできます。詳細については、「JSONata を使用したデータ変換」を参照してください。

次の図では、JSON 情報が JSONata タスクステートをどのように遷移するかを示しています。

Diagram showing JSONata task state flow with input, arguments, output, and action components.

JSONPath を使用した入出力の処理

ステートの管理とデータの変換

JSONPath を使用するステートマシンでは、InputPathParametersResultSelectorResultPath、および OutputPath フィールドがステート間のデータフローを制御します。各 JSONPath フィールドで、ワークフローの各ステートを遷移するように JSON を操作します。

JSONPath フィールドでパスを使用して、入力または結果から JSON の部分を選択できます。パスは $ で始まる文字列です。これを使用して、JSON テキスト内でノードを識別します。Step Functions パスは JsonPath 構文を使用します。

次の図では、JSON 情報が JSONPath タスクステートをどのように遷移するかを示しています。InputPath では、JSON 入力のうち、Task ステートのタスク (例: AWS Lambda 関数) に渡す部分を選択します。Parameters フィールドで、アクションに送信するデータを調整できます。その後、ResultSelector は、アクション結果の一部を選択して、次に渡すことができます。ResultPath は、ステートの入力とタスクの結果の組み合わせを選択して、出力に渡します。OutputPath は、JSON 出力をフィルタリングして、出力に渡される情報をさらに制限できます。

フィルターの順序: InputPath、Parameters、ResultSelector、ResultPath、および OutputPath。