翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Step Functions ResultPath で を使用して状態出力を指定する
状態の管理とデータの変換
このページでは、 を参照しますJSONPath。Step Functions は最近、状態を管理し、データを変換JSONataするために変数 と を追加しました。
変数を使用したデータの受け渡しと を使用したデータの変換JSONataについて説明します。
状態の出力は、入力のコピー、生成される結果 (例: Task
状態の Lambda 関数からの出力)、またはその入力と結果の組み合わせです。ResultPath
を使用して、上記のうち、状態出力に渡す組み合わせを制御します。
次の状態タイプでは、結果を生成できます。また、ResultPath:
を含むことができます。
ResultPath
を使用して、タスク結果とタスク入力を組み合わせるか、またはこれらのいずれかを選択します。ResultPath
に指定したパスで、出力に渡す情報を制御します。
注記
ResultPath
は参照パスの使用に制限されています。これにより、パスは 内の 1 つのノードのみを識別する必要がありますJSON。Amazon ステートメント言語の リファレンスパス を参照してください。
ResultPath を使用して入力をタスク結果に置き換える
を指定しない場合ResultPath
、デフォルトの動作は と同じです"ResultPath": "$"
。状態は、状態入力全体をタスクの結果に置き換えます。
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": "$"
# Task result
"Hello, Step Functions!"
# State Output
"Hello, Step Functions!"
注記
ResultPath
は、結果の内容を入力に含むために、出力に渡す前に使用します。ただし、 ResultPath
を指定しない場合、デフォルトのアクションは入力全体を置き換えます。
結果を破棄し、元の入力を保持する
ResultPath
を に設定するとnull
、状態は元の入力を出力に渡します。状態の入力ペイロードは、タスク結果に関係なく、出力に直接コピーされます。
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": null
# Task result
"Hello, Step Functions!"
# State Output
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
ResultPath を使用して結果を入力に含める
パスを指定すると ResultPath、状態出力は状態入力とタスク結果を組み合わせます。
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": "$.taskresult"
# Task result
"Hello, Step Functions!"
# State Output
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions",
"taskresult" : "Hello, Step Functions!"
}
また、その結果を入力の子ノードに挿入することもできます。ResultPath
を以下のように設定します。
"ResultPath": "$.strings.lambdaresult"
次の入力があるとします。
{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz" }, "who": "AWS Step Functions" }
タスク結果は、入力にstrings
ノードの子として挿入されます。
{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz", "lambdaresult": "Hello, Step Functions!" }, "who": "AWS Step Functions" }
状態出力に、結果JSONを含む元の入力が子ノードとして含まれるようになりました。
ResultPath を使用して入力内のノードを結果で更新する
に既存のノードを指定すると ResultPath、タスク結果はその既存のノードを置き換えます。
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": "$.comment"
# Task result
"Hello, Step Functions!"
# State Output
{
"comment": "Hello, Step Functions!",
"details": "Default example",
"who" : "Step Functions"
}
ResultPath を使用してエラーと入力の両方を に含める Catch
場合によっては、元の入力をエラーとともに保持する場合があります。Catch
の ResultPath
を使用して、エラーを置き換えずに元の入力に含めます。
"Catch": [{ "ErrorEquals": ["States.ALL"], "Next": "NextTask", "ResultPath": "$.error" }]
前の Catch
ステートメントでエラーが検出された場合は、状態入力の error
ノードに結果が含まれます。例えば、次の入力を示します。
{"foo": "bar"}
エラー検出時の状態出力は次のようになります。
{ "foo": "bar", "error": { "Error": "
Error here
" } }
エラー処理の詳細については、以下を参照してください。