InputPath、パラメータおよび結果セレクタ - AWS Step Functions

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

InputPath、パラメータおよび結果セレクタ

-InputPath,ParametersおよびResultSelectorフィールドを使用して、ワークフローを通して動く JSON を操作する方法を提供します。InputPathパスを使用して JSON 表記をフィルタリングすることで渡される入力を制限できます (Paths). Parameters フィールドによって、ステートマシンで定義した静的値あるいはパスを使用した入力から選択された静的値のいずれかの値となるキー値ペアのコレクションを渡すことができるようになります。-ResultSelectorフィールドは、前の状態の結果を操作する方法を提供しますResultPathが適用される。

AWS Step Functions は InputPath フィールド、そして Parameters フィールドの順に適用します。最初に InputPath を使用して raw 入力をフィルタリングしてから、Parameters を適用して、入力をさらに操作するか、新しい値を追加します。その後、を使用することもできますResultSelectorフィールドを使用して、ステートの出力を操作します。ResultPathが適用される。

ヒント

の使用Step Functions コンソールでのデータフローシミュレータを使用してJSONパス構文をテストし、状態内でデータがどのように操作されるかをよりよく理解する,を使用して、ステート間でデータがどのように渡されるかを確認することができます。

InputPath

状態入力の一部を選択するには、InputPath を使用します。

たとえば、状態への入力に以下が含まれているとします。

{ "comment": "Example for InputPath.", "dataset1": { "val1": 1, "val2": 2, "val3": 3 }, "dataset2": { "val1": "a", "val2": "b", "val3": "c" } }

InputPath を適用できます。

"InputPath": "$.dataset2",

上記の InputPath を使用すると、入力として渡される JSON は次のようになります。

{ "val1": "a", "val2": "b", "val3": "c" }
注記

パスは値の選択になる場合があります。次の の例を考えます。

{ "a": [1, 2, 3, 4] }

パス $.a[0:2] を適用すると、結果は次のとおりです。

[ 1, 2 ]

Parameters

このセクションでは、[パラメータ] フィールドを使用するさまざまな方法を示します。

キーと値のペア

の使用Parametersフィールドを使用して、入力として渡されるキーと値のペアの集合を作成します。それぞれの値は、ステートマシンの定義に含める静的な値、または入力からパスまたはコンテキストオブジェクトで選択した静的な値を使用できます。パスを使用して値を選択するキーと値のペアの場合、キーの名前は .$ で終わる必要があります。

たとえば、以下の入力を使用するとします。

{ "comment": "Example for Parameters.", "product": { "details": { "color": "blue", "size": "small", "material": "cotton" }, "availability": "in stock", "sku": "2317", "cost": "$23" } }

いくつかの情報を選択するには、これらのパラメータをステートマシン定義で指定できます。

"Parameters": { "comment": "Selecting what I care about.", "MyDetails": { "size.$": "$.product.details.size", "exists.$": "$.product.availability", "StaticValue": "foo" } },

前の入力と Parameters フィールドを指定する場合、これが渡される JSON となります。

{ "comment": "Selecting what I care about.", "MyDetails": { "size": "small", "exists": "in stock", "StaticValue": "foo" } },

入力に加えて、コンテキストオブジェクトとして知られる特別な JSON にアクセスできます。コンテキストオブジェクトには、ステートマシン実行に関する情報が含まれています。「Context オブジェクト」を参照してください。

接続リソース

Parameters フィールドを使用して、接続されたリソースに情報を渡すこともできます。たとえば、タスクの状態で AWS Batch ジョブを調整する場合は、該当する API パラメータをそのサービスの API アクションに直接渡すことができます。詳細については、以下のトピックを参照してください。

Amazon S3

または、状態間で渡すLambda 関数データが 262,144 バイトを超える場合、Amazon S3 を使用してデータを保存し、Payloadパラメーターを使用して、バケット名とキー値を取得します。または、実行時に小さいペイロードを渡すように実装を調整することもできます。詳細については、「大きなペイロードを渡す代わりに Amazon S3 ARN を使用する」を参照してください。

ResultSelector

の使用ResultSelectorフィールドを使用して、ステートの結果を操作します。ResultPathが適用される。-ResultSelectorフィールドを使用すると、キー値のペアのコレクションを作成できます。このペアでは、値は静的であるか、状態の結果から選択されます。の出力はResultSelectorは状態の結果を置き換え、ResultPath

ResultSelectorは、以下の状態のオプションのフィールドです。

たとえば、Step Functions サービス統合は、結果のペイロードに加えてメタデータを返します。ResultSelectorは、結果の一部を選択し、状態入力とResultPath。この例では、のみ、選択したいですresourceTypeおよびClusterIdを作成し、それを Amazon EMR CreateCluster.sync からの状態入力とマージします。以下があるとします。

{ "resourceType": "elasticmapreduce", "resource": "createCluster.sync", "output": { "SdkHttpMetadata": { "HttpHeaders": { "Content-Length": "1112", "Content-Type": "application/x-amz-JSON-1.1", "Date": "Mon, 25 Nov 2019 19:41:29 GMT", "x-amzn-RequestId": "1234-5678-9012" }, "HttpStatusCode": 200 }, "SdkResponseMetadata": { "RequestId": "1234-5678-9012" }, "ClusterId": "AKIAIOSFODNN7EXAMPLE" } }

その後、[resourceTypeおよびClusterIdを使用したResultSelector:

"Create Cluster": { "Type": "Task", "Resource": "arn:aws:states:::elasticmapreduce:createCluster.sync", "Parameters": { <some parameters> }, "ResultSelector": { "ClusterId.$": "$.output.ClusterId", "ResourceType.$": "$.resourceType" }, "ResultPath": "$.EMROutput", "Next": "Next Step" }

指定された入力では、ResultSelector生成する:

{ "OtherDataFromInput": {}, "EMROutput": { "ResourceType": "elasticmapreduce", "ClusterId": "AKIAIOSFODNN7EXAMPLE" } }