コンテキストオブジェクト - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

コンテキストオブジェクト

コンテキストオブジェクトは、実行時に使用できる内部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 RunRedriveTimeコンテキストオブジェクトは 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 つの項目 ValueIndex を追加で使用できます。各 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 } } }

次の入力を使用して前のステートマシンを実行すると、 IndexValue が出力に挿入されます。

[ { "who": "bob" }, { "who": "meg" }, { "who": "joe" } ]

実行の出力では、以下のように、3 回の各反復に対して Index および Value 項目の値が返されます。

[ { "ContextIndex": 0, "ContextValue": { "who": "bob" } }, { "ContextIndex": 1, "ContextValue": { "who": "meg" } }, { "ContextIndex": 2, "ContextValue": { "who": "joe" } } ]