API使用API閘道建立 Step Functions - AWS Step Functions

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

API使用API閘道建立 Step Functions

您可以使用 Amazon API 閘道將您的方法 AWS Step Functions APIs與API閘道中的方法建立關聯API。將HTTPS要求傳送至API方法時,API閘道會叫用您的 Step Fun API ctions 動作。

本教學課程將向您展示如何建立使API用一個資源的資源,以及與StartExecutionAPI動作進行通訊的POST方法。您將使用 AWS Identity and Access Management (IAM)控制台為API閘道創建角色。然後,您將使用 API Gateway 主控台建立API閘道API、建立資源和方法,並將方法對應至StartExecutionAPI動作。最後,您將部署並測試您的API.

注意

雖然 Amazon API Gateway 可以透過呼叫DescribeExecution來啟動 Step Functions 式執行StartExecution,但您必須呼叫以取得結果。

步驟 1:建立API閘道IAM角色

在建立API閘道之前API,您必須先授與API閘道權限,才能呼叫 Step Fun API ctions 動作。

設定API閘道的權限
  1. 登入IAM主控台,然後選擇 [角色]、[建立角色]。

  2. Select trusted entity (選取信任的實體) 頁面上,執行以下作業:

    1. 對於信任的實體類型,請保留的預設選取項目AWS 服務

    2. 對於使用案例,請從下拉式清單中選擇API閘道

  3. 選取 [API閘道],然後選擇 [下一步]。

  4. Add permissions (新增許可) 頁面上,選擇 Next (下一步)。

  5. (選擇性) 在名稱、檢閱和建立頁面上,輸入詳細資訊,例如角色名稱。例如,​輸入 APIGatewayToStepFunctions

  6. 選擇建立角色

    角IAM色會顯示在角色清單中。

  7. 選擇您的角色名稱並記下「角色」(Role)ARN,如下列範例所示。

    arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
將策略附加到IAM角色
  1. Roles (角色) 頁面上,搜尋您的角色 (APIGatewayToStepFunctions),然後選擇角色。

  2. 在 [權限] 索引標籤上,選擇 [新增權限],然後選擇 [附加原則]。

  3. 在 [附加原則] 頁面上,搜尋AWSStepFunctionsFullAccess並選擇原則,然後選擇 [新增權限]。

步驟 2:建立API閘道 API

建立IAM角色後,您可以建立自訂API閘道API。

若要建立 API
  1. 開啟 Amazon API 閘道主控台,然後選擇 [建立] API。

  2. 在 [選擇API類型] 頁面的RESTAPI窗格中,選擇 [建置]。

  3. 在 [建立] REST API 頁面上,選取 [新增]API,然後輸入 StartExecutionAPI 為名API稱

  4. API端點類型保持為 [地區],然後選擇 [建立] API。

建立資源
  1. 在 [資] 頁面上 StartExecutionAPI,選擇 [建立資源]。

  2. 在 [建立資源] 頁面上,輸入execution源名稱,然後選擇 [建立資源]。

建立 POST 方法
  1. 選擇 /執行資源,然後選擇 [建立方法]。

  2. 選擇做為「方法」類型POST

  3. 針對整合類型,選擇AWS 服務

  4. 對於 AWS 區域,從清單中選擇「區域」。

  5. 對於 AWS 服務,從清單中選擇 Step Functions

  6. AWS 子網域保持空白。

  7. 對於HTTP方法,請POST從清單中選擇。

    注意

    所有 Step Fun API ctions 動作都使用此HTTPPOST方法。

  8. 針對動作類型,選取使用動作名稱

  9. 針對動作名稱,輸入 StartExecution

  10. 針對 「執行角色」,輸入您先前建立之IAM角色ARN的角色,如下列範例所示。

    arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
  11. 保留 [認證快取] 和 [預設逾時] 的預設選項,然後選擇 [儲存]。

API閘道與 Step Functions 之間的視覺對應會顯示在 /execution-POST-方法執行頁面上。

步驟 3:測試和部署API閘道 API

建立完成之後API,測試並部署它。

若要測試API閘道與 Step Functions 之間的通訊
  1. /執行-POST-[方法執行] 頁面上,選擇 [測試] 索引標籤。您可能需要選擇向右箭頭按鈕才能顯示此索引標籤。

  2. /execution-POST-[方法測試] 索引標籤上,使用現有狀態機器 (或建立使用 Lambda 函數的ARN新狀態機器),將下列要求參數複製到 [要求主體] 區段中,然後選擇 [測試]。

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

    使用這種方法,您可以根據開發階段指定不同ARNs的狀態機器 (例如devtest、、和prod)。如需有關在對應範本中指定階段變數的詳細資訊,請參閱《API閘道開發人員指南》$stageVariables中的。

  3. 執行開始,執行ARN及其紀元日期顯示在響應主體下。

    { "executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution", "startDate": 1486768956.878 }
    注意

    您可以在 AWS Step Functions 主控台上選擇您的狀態機器來檢視執行。

若要部署您的 API
  1. 在 [資] 頁面上 StartExecutionAPI,選擇 [部署] API。

  2. 針對階段,選取新階段

  3. 針對階段名稱,輸入 alpha

  4. 描述,請輸入描述。

  5. 選擇部署

測試您的部署
  1. 在的「階段」頁面上 StartExecutionAPI,展開 Alpha/、/執行 POST,然後選擇方POST法。

  2. 在「方法覆寫」 下,選擇複製圖示以複製您API的呼叫URL。完整URL應該看起來像下面的例子。

    https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution
  3. 從命令列中,使用狀態機器執行curl命令,然後叫用URL部署的,如下列範例所示。ARN

    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及其紀元日期,如下列範例所示。

    {"executionArn":"arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution","startDate":1.486772644911E9}
    注意

    如果您收到「缺少身份驗證令牌」錯誤,請確保調用以 /execution URL 結束。