本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 API Gateway 建立 Step Functions API
您可以使用 Amazon API Gateway 將 AWS Step Functions APIs與 API Gateway API 中的方法建立關聯。當 HTTPS 請求傳送到 API 方法時,API Gateway 會叫用您的 Step Functions API 動作。
此教學課程說明如何使用一個資源和 POST
方法來建立 API,從而與 StartExecution
API 動作通訊。您將使用 AWS Identity and Access Management (IAM) 主控台來建立 API Gateway 的角色。然後,您將使用 API Gateway 主控台來建立 API Gateway API、建立資源和方法,並將方法映射至 StartExecution
API 動作。最後,您將部署和測試 API。
注意
雖然 Amazon API Gateway 可以透過呼叫 來啟動 Step Functions 執行StartExecution
,但您必須呼叫 DescribeExecution
以取得結果。
步驟 1:建立 API Gateway 的 IAM 角色
在建立 API Gateway API 之前,您需要授予 API Gateway 許可,以呼叫 Step Functions API 動作。
設定 API Gateway 的許可
-
登入 IAM 主控台
,然後選擇角色、建立角色。 -
在 Select trusted entity (選取信任的實體) 頁面上,執行以下作業:
對於信任的實體類型,請保留 的預設選擇AWS 服務。
對於使用案例,從下拉式清單中選擇 API Gateway。
選取 API Gateway,然後選擇下一步。
-
在 Add permissions (新增許可) 頁面上,選擇 Next (下一步)。
-
(選用) 在名稱、檢閱和建立頁面上,輸入詳細資訊,例如角色名稱。例如,輸入
APIGatewayToStepFunctions
。 選擇建立角色。
IAM 角色會出現在角色清單中。
-
選擇您角色的名稱,並記下 Role ARN (角色 ARN),如以下範例所示。
arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
將政策連接至 IAM 角色
-
在 Roles (角色) 頁面上,搜尋您的角色 (
APIGatewayToStepFunctions
),然後選擇角色。 -
在許可索引標籤上,選擇新增許可,然後選擇連接政策。
-
在連接政策頁面上,搜尋
AWSStepFunctionsFullAccess
,選擇政策,然後選擇新增許可。
步驟 2:建立您的 API Gateway API
建立 IAM 角色後,您可以建立自訂 API Gateway API。
若要建立 API
-
開啟 Amazon API Gateway 主控台
,然後選擇建立 API。 在選擇 API 類型頁面上,在 REST API 窗格中,選擇建置。
在建立 REST API 頁面上,選取新 API,然後輸入 API 名稱的
StartExecutionAPI
。將 API 端點類型保留為區域,然後選擇建立 API。
建立資源
-
在
StartExecutionAPI
的資源頁面上,選擇建立資源。 -
在建立資源頁面上,
execution
輸入 資源名稱,然後選擇建立資源。
建立 POST 方法
-
選擇 /execution 資源,然後選擇建立方法。
-
針對方法類型,選擇
POST
。 -
對於整合類型,選擇 AWS 服務。
-
對於 AWS 區域,從清單中選擇區域。
-
對於 AWS 服務,從清單中選擇步驟函數。
讓 AWS 子網域保持空白。
-
對於 HTTP 方法,從清單中選擇 POST。
注意
所有 Step Functions API 動作都使用 HTTP
POST
方法。 -
針對動作類型,選取使用動作名稱。
-
針對動作名稱,輸入
StartExecution
。 -
針對執行角色,輸入您先前建立之 IAM 角色的角色 ARN,如下列範例所示。
arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
-
保留登入資料快取和預設逾時的預設選項,然後選擇儲存。
API Gateway 和 Step Functions 之間的視覺化映射會顯示在 /execution - POST - Method Execution 頁面上。
步驟 3:測試和部署 API Gateway API
建立 API 之後,請測試和部署它。
測試 API Gateway 與 Step Functions 之間的通訊
-
在 /execution - POST - Method Execution 頁面上,選擇測試索引標籤。您可能需要選擇向右箭頭按鈕才能顯示此索引標籤。
-
在 /execution - POST - Method Test 索引標籤上,使用現有狀態機器的 ARN 將下列請求參數複製到請求內文區段 (或使用 Lambda 函數建立新的狀態機器),然後選擇測試。
{ "input": "{}", "name": "MyExecution", "stateMachineArn": "
arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld
" }如需詳細資訊,請參閱 AWS Step Functions API 參考中的
StartExecution
請求語法。注意
如果您不想在 API Gateway 呼叫的內文中包含狀態機器的 ARN,您可以在整合請求索引標籤中設定映射範本,如下列範例所示。
{ "input": "$util.escapeJavaScript($input.json('$'))", "stateMachineArn": "$util.escapeJavaScript($stageVariables.arn)" }
透過此方法,您可以根據開發階段 (例如,、
dev
test
和 ) 指定不同狀態機器ARNsprod
。如需在映射範本中指定階段變數的詳細資訊,請參閱 API Gateway 開發人員指南$stageVariables
中的 。 -
執行開始,執行 ARN 及其 epoch 日期會顯示在回應內文下方。
{ "executionArn": "
arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution
", "startDate": 1486768956.878 }注意
您可以在 AWS Step Functions 主控台
上選擇您的狀態機器來檢視執行。
部署 API
-
在
StartExecutionAPI
的資源頁面上,選擇部署 API。 針對階段,選取新階段。
針對階段名稱,輸入
alpha
。在描述,請輸入描述。
選擇部署。
測試您的部署
-
在
StartExecutionAPI
的階段頁面上,展開 alpha、/、/execution、POST,然後選擇 POST 方法。 -
在方法覆寫下,選擇複製圖示以複製 API 的叫用 URL。完整的 URL 應如下所示。
https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution
-
從命令列使用您狀態機器的 ARN 執行
curl
命令,然後呼叫您部署的 URL,如以下範例所示。curl -X POST -d '{"input": "{}","name": "MyExecution","stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld"}' https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution
隨即傳回執行 ARN 及其 Epoch 日期,如以下範例所示。
{"executionArn":"arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution","startDate":1.486772644911E9}
注意
如果您收到「缺少身分驗證字符」錯誤,請確定調用 URL 結尾為 /execution。