Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

Step Functions ワークフローでパラメータを操作する

フォーカスモード
Step Functions ワークフローでパラメータを操作する - AWS Step Functions

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

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

状態の管理とデータの変換

JSON はワークフローを通して動くため、InputPathParameters、および ResultSelector フィールドから JSON の操作方法を提供します。InputPath は、パスを使用して JSON 表記をフィルタリングして渡される入力を制限できます (JSONPath パスの使用 を参照)。Parameters フィールドでは、静的な値を使用するか、パスを使用して入力から選択することで、キーと値のペアのコレクションを渡すことができます。

ResultSelector フィールドは、ResultPath が適用される前の状態を操作する方法を提供します。

AWS Step Functions は最初に InputPathフィールドを適用し、次に Parametersフィールドを適用します。最初に InputPath を使用して raw 入力をフィルタリングしてから、Parameters を適用して、入力をさらに操作するか、新しい値を追加します。その後、ResultSelector フィールドを使って、ResultPath を適用する前に、状態の出力を操作できます。

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

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

コネクテッドリソース

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

Amazon S3

状態間で渡す Lambda 関数のデータが 262,144 バイトを超える場合、Amazon S3 を使用してデータを保存し、次のいずれかの方法を実装することを推奨いたします。

または、実行時に小さいペイロードを渡すように実装を調整します。

ResultSelector

ResultPath を適用する前に、ResultSelector フィールドを利用して、状態の結果を操作します。ResultSelector フィールドでは、キーバリューペアのコレクションを作成できます。ここでは、値は静的であるか、状態の結果から選択されます。ResultSelector フィールドを使用すると、状態の結果のどの部分を ResultPath フィールドに渡すかを選択できます。

注記

ResultPath フィールドを使用すると、ResultSelector フィールドの出力を元の入力に追加できます。

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

例えば、Step Functions サービス統合は、結果のペイロードに加えてメタデータを返します。ResultSelector は結果の一部を選択し、ResultPath を含む状態の入力とマージできます。この例では、resourceTypeClusterId だけを選択し、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" } }

その後、ResultSelector を使って resourceTypeClusterId を選択できます。

"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": { "ClusterId": "AKIAIOSFODNN7EXAMPLE", "ResourceType": "elasticmapreduce", } }

配列の配列の平坦化

ステートマシンの Parallel ワークフローの状態 または Map 状態のワークフロー 状態により配列の配列が返される場合は、ResultSelector フィールドを使用してフラットな配列に変換できます。このフィールドを並列ステートまたはマップステートの定義に含めて、これらのステートの結果を操作できます。

配列をフラット化するには、次の例に示すように、 ResultSelectorフィールド[*]で構文 を使用します。

"ResultSelector": { "flattenArray.$": "$[*][*]" }

配列をフラット化する方法を示す例については、以下のチュートリアルのステップ 3 を参照してください。

このページの内容

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.