選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

在 Step Functions 工作流程中操作參數

焦點模式
在 Step Functions 工作流程中操作參數 - AWS Step Functions

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

管理狀態和轉換資料

Step Functions 最近新增了變數,並JSONata管理狀態和轉換資料。

了解如何使用變數傳遞資料,以及使用 轉換資料JSONata

InputPathParametersResultSelector 欄位提供在工作流程中移動JSON時操縱 的方式。 InputPath可以使用路徑篩選JSON符號來限制傳遞的輸入 (請參閱 使用JSONPath路徑)。使用 Parameters 欄位,您可以使用靜態值或使用路徑從輸入中選擇,傳遞一組鍵/值對。

ResultSelector 欄位提供在ResultPath套用 之前操作狀態結果的方法。

AWS Step Functions 會先套用 InputPath 欄位,再套用 Parameters 欄位。您可以先使用 InputPath 將原始輸入篩選成您所要的選取範圍,然後套用 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 欄位來建立做為輸入傳遞的鍵/值對集合。每個 的值可以是您在狀態機器定義中包含的靜態值,也可以從具有路徑的輸入或內容物件中選取。對於使用路徑來選取值的索引鍵/值組,索引鍵名稱必須以 .$ 做為結尾。

例如,假設您提供以下輸入。

{ "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物件的特殊物件。內容物件包含狀態機器執行的相關資訊。請參閱 從 Step Functions 中的內容物件存取執行資料

連線的資源

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 .createClustersync EMR 的狀態輸入合併。有以下幾點:

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

然後,您可以使用 選取 resourceTypeClusterId 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": { "ClusterId": "AKIAIOSFODNN7EXAMPLE", "ResourceType": "elasticmapreduce", } }

平面化陣列陣列

如果狀態機器中的 平行工作流程狀態映射工作流程狀態 狀態傳回陣列,您可以使用 ResultSelector 欄位將陣列轉換為平面陣列。您可以在平行或映射狀態定義中包含此欄位,以操作這些狀態的結果。

若要扁平化陣列,請在 ResultSelector [*]欄位中使用語法:,如下列範例所示。

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

如需示範如何扁平化陣列的範例,請參閱下列教學課程中的步驟 3

在本頁面

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。