將參數傳遞至服務 API - AWS Step Functions

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

將參數傳遞至服務 API

Task 狀態中使用 Parameters 欄位,以控制將哪些參數傳遞到服務 API。

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

The field Filter is not supported by Step Functions.

將靜態 JSON 作為參數傳遞

您可以直接在狀態機器定義中包含 JSON 物件,以當作參數傳遞到資源。

例如,若要為 AWS Batch 的SubmitJob API 設定 RetryStrategy 參數,您可以將下列納入您的參數。

"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 文本中的組件。步驟函數路徑使用JsonPath語法。

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

考慮下面的狀態輸入:

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

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

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

步驟函數然後將值foo作為參數傳遞。

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

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

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

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