將參數傳遞給 Step Functions 數API中的服務 - AWS Step Functions

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

將參數傳遞給 Step Functions 數API中的服務

使用狀Task態中的Parameters欄位來控制要傳遞給服務的參數API。

Parameters欄位內,您必須在API動作中使用陣列參數的複數形式。例如,如果您使用DescribeSnapshotsAPI動作的「篩選器」欄位與 Amazon 整合EC2,則必須將欄位定義為Filters。如果您不使用複數形式,Step Functions 會傳回下列錯誤:

The field Filter is not supported by Step Functions.

將靜態JSON作為參數傳遞

您可以直接在狀態機定義中包含一個JSON對象,以作為參數傳遞給資源。

例如,若要設定的RetryStrategySubmitJobAPI參數 AWS Batch,您可以在參數中包含以下內容。

"RetryStrategy": { "attempts": 5 }

您也可以使用靜態傳遞多個參數JSON。作為更完整的範例,以下是發佈到 Amazon SNS 主題的任務規格的ResourceParameters欄位myTopic

"Resource": "arn:aws:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws:sns:us-east-2:123456789012:myTopic", "Message": "test message", "MessageAttributes": { "my attribute no 1": { "DataType": "String", "StringValue": "value of my attribute no 1" }, "my attribute no 2": { "DataType": "String", "StringValue": "value of my attribute no 2" } } },

使用路徑將狀態輸入作為參數傳遞

您可以使用路徑將狀態輸入的部分作為參數傳遞。路徑是一個字符串,以開頭$,用於標識JSON文本中的組件。Step Functions 路徑使用JsonPath語法。

若要指定參數使用路徑,請以結束參數名稱.$。例如,如果您的狀態輸入包含名為的節點內的文字message,您可以使用路徑將該文字當做參數傳遞。

考慮下面的狀態輸入:

{ "comment": "A message in the state input", "input": { "message": "foo", "otherInfo": "bar" }, "data": "example" }

要傳遞命名message為參數的節點的值myMessage,請指定以下語法:

"Parameters": {"myMessage.$": "$.input.message"},

Step Functions 數然後將值foo作為參數傳遞。

如需有關在 Step Functions 數中使用參數的詳細資訊,請參閱下列內容:

依參數方式傳遞內容物件節點

除了靜態內容和來自狀態輸入的節點,您還可以依參數方式來傳遞內容物件的節點。上下文對象是在狀態機執行期間存在的動態JSON數據。它包含有關您的狀態機器和目前執行的資訊。您可以使用狀態定義之 "Parameters" 欄位的路徑,存取內容物件。

如需關於內容物件及如何存取 "Parameters" 欄位資料的詳細資訊,請參閱下列: