Step Functions の Context オブジェクトから実行データにアクセスする - AWS Step Functions

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

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 } } }

次の入力を使用して前のステートマシンを実行すると、 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" } } ]