翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Step Functions の Context オブジェクトから実行データにアクセスする
状態の管理とデータの変換
Step Functions は最近、状態を管理し、データを変換JSONataするために変数 と を追加しました。
変数を使用したデータの受け渡しと を使用したデータの変換JSONataについて説明します。
Context オブジェクトは、実行中に使用できる内部JSON構造であり、ステートマシンと実行に関する情報が含まれています。コンテキストは、特定の実行に関するワークフロー情報を提供します。ワークフローは、 でJSONata式内の Context オブジェクトを参照できます$states.context
。
Context オブジェクトへのアクセス
でコンテキストオブジェクトにアクセスするには JSONata
JSONata 状態のコンテキストオブジェクトにアクセスするには、JSONata式$states.context
で を使用します。
{
"ExecutionID" : "{% $states.context.Execution.Id %}"
}
でコンテキストオブジェクトにアクセスするには JSONPath
の Context オブジェクトにアクセスするにはJSONPath、まずキーの末尾.$
に を追加して、値がパスであることを示します。次に、 値の前に を付加$$.
して、Context オブジェクト内のノードを選択します。
{
"ExecutionID.$": "$$.Execution.Id"
}
JSONPath 状態は、次のJSONPathフィールドからコンテキスト ($$.
) を参照できます。
-
InputPath
-
OutputPath
-
ItemsPath
(マップ状態) -
Variable
(選択状態) -
ResultSelector
-
Parameters
-
変数と変数の比較演算子
コンテキストオブジェクトフィールド
Context オブジェクトには、ステートマシン、状態、実行、タスクに関する情報が含まれます。このJSONオブジェクトには、各タイプのデータのノードが含まれ、次の形式になります。
{
"Execution": {
"Id": "String
",
"Input": {},
"Name": "String
",
"RoleArn": "String
",
"StartTime": "Format: ISO 8601
",
"RedriveCount": Number
,
"RedriveTime": "Format: ISO 8601
"
},
"State": {
"EnteredTime": "Format: ISO 8601
",
"Name": "String
",
"RetryCount": Number
},
"StateMachine": {
"Id": "String
",
"Name": "String
"
},
"Task": {
"Token": "String
"
}
}
実行中、コンテキストオブジェクトには関連するデータが入力されます。 RedriveTime
コンテキストオブジェクトは、redriven 実行。以下の場合 redriven a Map Runでは、RedriveTime
コンテキストオブジェクトは Standard タイプの子ワークフローでのみ使用できます。の場合 redriven Express 型の子ワークフローを使用したマップ実行RedriveTime
は利用できません。
稼働中の実行からのコンテンツには、次の形式による仕様が含まれています。
{
"Execution": {
"Id": "arn:aws:states:us-east-1:123456789012:execution:stateMachineName:executionName",
"Input": {
"key": "value"
},
"Name": "executionName",
"RoleArn": "arn:aws:iam::123456789012:role...",
"StartTime": "2019-03-26T20:14:13.192Z"
},
"State": {
"EnteredTime": "2019-03-26T20:14:13.192Z",
"Name": "Test",
"RetryCount": 3
},
"StateMachine": {
"Id": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName",
"Name": "stateMachineName"
},
"Task": {
"Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W"
}
}
注記
Map
状態に関連するコンテキストオブジェクトデータについては、「」を参照してくださいマップ状態のコンテキストオブジェクトデータ。
マップ状態のコンテキストオブジェクトデータ
状態の管理とデータの変換
Step Functions は最近、状態を管理し、データを変換JSONataするために変数 と を追加しました。
変数を使用したデータの受け渡しと を使用したデータの変換JSONataについて説明します。
Map 状態を処理するときに Context オブジェクトで使用できる項目は、 Index
と の 2 つですValue
。各 Map
状態の反復において、Index
には現在処理中の配列項目のインデックス番号が含まれますが、Value
には処理中の配列項目が含まれます。Map
状態内では、Context オブジェクトには次のデータが含まれます。
"Map": {
"Item": {
"Index": Number
,
"Value": "String
"
}
}
これらは Map
状態でのみ使用でき、ItemSelector (マップ)
フィールドで指定することができます。
注記
ItemProcessor
セクションに含まれるMap
状態内ではなく、メイン状態の ItemSelector
ブロック内の Context オブジェクトからパラメータを定義する必要があります。
JSONPath Map
ステートを使用するステートマシンを指定すると、次のように Context オブジェクトから情報を挿入できます。
{ "StartAt": "ExampleMapState", "States": { "ExampleMapState": { "Type": "Map", "ItemSelector": { "ContextIndex.$": "$$.Map.Item.Index", "ContextValue.$": "$$.Map.Item.Value" }, "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "TestPass", "States": { "TestPass": { "Type": "Pass", "End": true } } }, "End": true } } }
次の入力を使用して前のステートマシンを実行すると、 Index
と Value
が出力に挿入されます。
[ { "who": "bob" }, { "who": "meg" }, { "who": "joe" } ]
実行の出力では、以下のように、3 回の各反復に対して Index
および Value
項目の値が返されます。
[
{
"ContextIndex": 0,
"ContextValue": {
"who": "bob"
}
},
{
"ContextIndex": 1,
"ContextValue": {
"who": "meg"
}
},
{
"ContextIndex": 2,
"ContextValue": {
"who": "joe"
}
}
]