Context オブジェクト - AWS Step Functions

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

Context オブジェクト

コンテキストオブジェクトは、実行中に使用できる内部の JSON 構造です。また、ステートマシンおよび実行に関する情報が含まれます。これにより、ワークフローが特定の実行に関する情報にアクセスできるようになります。コンテキストオブジェクトには、次のフィールドからアクセスできます。

  • InputPath

  • OutputPath

  • ItemsPath(マップ状態)

  • Variable(選択状態)

  • ResultSelector

  • 変数と変数の比較演算子

コンテキストオブジェクトの形式

コンテキストオブジェクトには、ステートマシン、筐体、実行、およびタスクに関する情報が含まれています。この JSON オブジェクトにはデータ型ごとのノードが含まれ、次の形式になります。

{ "Execution": { "Id": "String", "Input": {}, "StartTime": "Format: ISO 8601" }, "State": { "EnteredTime": "Format: ISO 8601", "Name": "String", "RetryCount": Number }, "StateMachine": { "Id": "String" }, "Task": { "Token": "String" } }

実行中、コンテキストオブジェクトの Parameters フィールドがアクセスされた場所から関連するデータで入力されます。Parameters フィールドがタスクの状態外にある場合、Task フィールドの値は null になります。

稼働中の実行からのコンテンツには、次の形式による仕様が含まれています。

{ "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": "name" }, "Task": { "Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W" } }
注記

Map 状態に関連するコンテキストオブジェクトデータについては、「Map 状態のコンテキストオブジェクトデータ」を参照してください。

コンテキストオブジェクトへのアクセス

コンテキストオブジェクトにアクセスするには、パスを使用して状態の入力を選択したときと同様に、.$ を末尾に追加したパラメータ名をまず指定します。次に、入力の代わりにコンテキストオブジェクトデータにアクセスするには、$$. をパスの先頭に追加します。これによって、パスを使用してコンテキストオブジェクト内のノードを選択するように AWS Step Functions に指示します。

このタスク状態の例は、パスを使用して、実行された 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" } }
注記

統合されたサービスの呼び出しにタスクトークンを使用する方法の詳細については、「タスクトークンのコールバックまで待機する」を参照してください。

Map 状態のコンテキストオブジェクトデータ

Map 状態を処理する際にコンテキストオブジェクトの 2 つの項目 ValueIndex を追加で使用できます。Index には、現在の反復で処理されている配列項目のインデックス番号が含まれています。Map 状態内では、コンテキストオブジェクトに以下のものが含まれます。

"Map": { "Item": { "Index": "Number", "Value": "String" } }

これらは Map 状態でのみ使用でき、Parameters フィールドの Iterator セクションの前に指定できます。

注記

コンテキストオブジェクトのパラメータは、 Iterator セクションに含まれている状態内ではなく、メインの Map 状態の Parameters ブロック内に定義する必要があります。

シンプルな Map 状態のステートマシンでは、コンテキストオブジェクトの情報を次のように挿入できます。

{ "StartAt": "ExampleMapState", "States": { "ExampleMapState": { "Type": "Map", "Parameters": { "ContextIndex.$": "$$.Map.Item.Index", "ContextValue.$": "$$.Map.Item.Value" }, "Iterator": { "StartAt": "TestPass", "States": { "TestPass": { "Type": "Pass", "End": true } } }, "End": true } } }

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

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

実行の出力は次のとおりです。

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