翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
コンテキストオブジェクト
コンテキストオブジェクトは、実行時に使用できる内部JSON構造であり、ステートマシンと実行に関する情報が含まれています。これにより、ワークフローが特定の実行に関する情報にアクセスできるようになります。コンテキストオブジェクトには、次のフィールドからアクセスできます。
-
InputPath
-
OutputPath
-
ItemsPath
(マップ状態) -
Variable
(選択状態) -
ResultSelector
Parameters
-
変数と変数の比較演算子
コンテキストオブジェクトの形式
コンテキストオブジェクトには、ステートマシン、筐体、実行、およびタスクに関する情報が含まれています。この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
"
}
}
実行中、コンテキストオブジェクトの Parameters
フィールドがアクセスされた場所から関連するデータで入力されます。Parameters
フィールドがタスクの状態外にある場合、Task
フィールドの値は null になります。
RedriveCount
コンテキストオブジェクトの値が 0 になっていない場合は、0 です。 redriven 実行。さらに、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
状態に関連するコンテキストオブジェクトデータについては、マップ状態のコンテキストオブジェクトデータ を参照してください。
コンテキストオブジェクトへのアクセス
コンテキストオブジェクトにアクセスするには、パスを使用して状態の入力を選択したときと同様に、.$
を末尾に追加したパラメータ名をまず指定します。次に、入力の代わりにコンテキストオブジェクトデータにアクセスするには、$$.
をパスの先頭に追加します。これは、 AWS Step Functions は、パスを使用してコンテキストオブジェクト内のノードを選択します。
次の例は、実行 ID、名前、開始時刻、 などのコンテキストオブジェクトにアクセスする方法を示しています。redrive カウント。
ダウンストリームサービスを取得して実行ARNを渡す
このタスク状態の例では、パスを使用して実行 Amazon リソースネーム (ARN) を取得し、Amazon Simple Queue Service (Amazon SQS) メッセージに渡します。
{
"Order Flight Ticket Queue": {
"Type": "Task",
"Resource": "arn:aws:states:::sqs:sendMessage",
"Parameters": {
"QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/flight-purchase",
"MessageBody": {
"From": "YVR",
"To": "SEA",
"Execution.$": "$$.Execution.Id"
}
},
"Next": "NEXT_STATE"
}
}
統合されたサービスの呼び出しにタスクトークンを使用する方法の詳細については、タスクトークンによるコールバックを待つ を参照してください。
パス状態で実行開始時間と名前にアクセス
{ "Comment": "Accessing context object in a state machine", "StartAt": "Get execution context data", "States": { "Get execution context data": { "Type": "Pass", "Parameters": { "startTime.$": "$$.Execution.StartTime", "execName.$": "$$.Execution.Name" }, "ResultPath": "$.executionContext", "End": true } } }
へのアクセス redrive 実行の数
次のタスク状態定義の例は、 にアクセスする方法を示しています。 redrive 実行の数。
{ "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload": {
"Number.$": "$$.Execution.RedriveCount"
}, "FunctionName": "arn:aws:lambda:us-east-2
:123456789012
:function:functionName
" }, "End": true }
マップ状態のコンテキストオブジェクトデータ
Map 状態を処理する際にコンテキストオブジェクトの 2 つの項目 Value
と Index
を追加で使用できます。各 Map
状態の反復において、Index
には現在処理中の配列項目のインデックス番号が含まれますが、Value
には処理中の配列項目が含まれます。Map
状態内では、コンテキストオブジェクトに以下のデータが含まれます。
"Map": {
"Item": {
"Index": Number
,
"Value": "String
"
}
}
これらは Map
状態でのみ使用でき、ItemSelector (マップ)
フィールドで指定することができます。
注記
コンテキストオブジェクトのパラメータは、ItemSelector
セクションに含まれている状態内ではなく、メインの Map
状態の ItemProcessor
ブロック内に定義する必要があります。
シンプルな Map
状態のステートマシンでは、コンテキストオブジェクトの情報を次のように挿入できます。
{ "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"
}
}
]