本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過API閘道叫用同步 Express 工作流程
此範例專案示範如何透過 Amazon API Gateway 叫用同步快速工作流程來管理員工資料庫。
在這個專案中,Step Functions 使用API閘道端點來啟動 Step Functions 同步快速工作流程。然後,這些工具會使用 DynamoDB 來搜尋、新增和移除員工資料庫中的員工。
如需步驟函數同步 Express 工作流程的詳細資訊,請參閱〈〉步驟函數中的同步和非同步快速工作流。
注意
此範例專案可能需要付費。
對於新 AWS 使用者,有免費用量方案可供使用。在此方案中,特定用量層級以下的服務皆為免費。如需關於 AWS 成本和免費方案,請參閱 Step Functions 定價
步驟 1:建立狀態機
-
開啟 Step Functions 主控台
,然後選擇建立狀態機器。 -
Invoke Synchronous Express Workflows through API Gateway
在搜尋方塊中輸入,然後選擇 [呼叫同步 Express 工作流程 API Gateway從返回的搜索結果中。 -
選擇 Next (下一步) 繼續。
-
選擇 [執行示範] 以建立唯讀和 ready-to-deploy 工作流程,或選擇 [在其上建置] 建立可編輯的狀態機定義,您可以在其上建置並稍後進行部署。
此範例專案會部署下列資源:
-
同時 Amazon API Gateway HTTPSAPI這是由狀態機調用。
-
同時 Amazon DynamoDB 表。
-
三 AWS Step Functions 狀態機。
-
相關 AWS Identity and Access Management (IAM)角色。
下列影像顯示呼叫同步 Express 工作流程的工作流程圖形 API Gateway示例項目:
-
-
選擇「使用範本」繼續進行選取。
接下來的步驟取決於您之前的選擇:
-
執行示範 — 您可以先檢閱狀態機器,然後再建立唯讀專案,其中包含部署的資源 AWS CloudFormation 到您的 AWS 帳戶.
您可以檢視狀態機器定義,當您準備就緒時,請選擇 [部署並執行] 以部署專案並建立資源。
部署最多可能需要 10 分鐘的時間來建立資源和權限。您可以使用「堆疊 ID」連結來監控進度 AWS CloudFormation.
部署完成後,您應該會在控制台中看到新的狀態機器。
-
建立在其上 — 您可以檢閱和編輯工作流程定義。您可能需要在範例專案中設定預留位置的值,然後才能嘗試執行自訂工作流程。
注意
部署到您帳戶的服務可能需要支付標準費用。
步驟 2:運行狀態機
-
在 [狀態電腦] 頁面上,選擇您的範例專案。
-
在範例專案頁面上,選擇 [開始執行]。
-
在 [開始執行] 對話方塊中,執行下列動作:
-
(選擇性) 輸入自訂執行名稱,以覆寫產生的預設值。
非ASCII名稱和記錄
Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。
-
(選擇性) 在「輸入」方塊中,將輸入值輸入為JSON。如果您正在運行演示,則可以跳過此步驟。
-
選擇 Start execution (開始執行)。
「Step Functions」主控台會將您導向「執行詳細資訊」頁面,您可以在其中選擇「圖形」檢視中的狀態,以瀏覽步驟詳情窗格中的相關資訊。
-
範例狀態機器程式碼
此範例專案中的狀態機器與API閘道和 DynamoDB 整合,方法是使用API閘道呼叫同步快速工作流程,然後使用 DynamoDB 從員工資料庫更新或讀取該工作流程。
瀏覽此範例狀態機器,以查看 Step Functions 如何從 DynamoDB 讀取以擷取員工資訊。
若要瞭解有關如何使用API閘道呼叫 Step Functions 的詳細資訊,請參閱下列內容。
有關如何進一步了解 AWS Step Functions 可以控制其他 AWS 服務,請參閱整合服務與 Step Functions。
{
"Comment": "This state machine returns an employee entry from DynamoDB",
"StartAt": "Read From DynamoDB",
"States": {
"Read From DynamoDB": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:getItem",
"Parameters": {
"TableName": "StepFunctionsSample-SynchronousExpressWorkflowAKIAIOSFODNN7EXAMPLE-DynamoDBTable-ANPAJ2UCCR6DPCEXAMPLE",
"Key": {
"EmployeeId": {"S.$": "$.employee"}
}
},
"Retry": [
{
"ErrorEquals": [
"DynamoDB.AmazonDynamoDBException"
],
"IntervalSeconds": 3,
"MaxAttempts": 2,
"BackoffRate": 1.5
}
],
"Next": "Is Get Successful"
},
"Is Get Successful": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.Item",
"IsPresent": true,
"Next": "Succeed Execution"
}
],
"Default": "Fail Execution"
},
"Succeed Execution": {
"Type": "Pass",
"Parameters" : {
"employee.$": "$.Item.EmployeeId.S",
"jobTitle.$": "$.Item.JobTitle.S"
},
"End": true
},
"Fail Execution": {
"Type": "Fail",
"Error": "EmployeeDoesNotExist"
}
}
}
有關如何在使用步驟函數與其他功能IAM時進行配置的資訊 AWS 服務,請參閱Step Functions 式如何為整合式服務產生IAM原則。
IAM例子
這些例子 AWS Identity and Access Management (IAM) 範例專案所產生的原則包含執行狀態機器及相關資源所需的最低權限。我們建議您僅在IAM原則中加入必要的權限。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogDelivery",
"logs:GetLogDelivery",
"logs:UpdateLogDelivery",
"logs:DeleteLogDelivery",
"logs:ListLogDeliveries",
"logs:PutResourcePolicy",
"logs:DescribeResourcePolicies",
"logs:DescribeLogGroups"
],
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:UpdateItem",
"dynamodb:DeleteItem"
],
"Resource": [
"arn:aws:dynamodb:us-east-1:111122223333:table/Write"
]
}
]
}
有關如何在使用步驟函數與其他功能IAM時進行配置的資訊 AWS 服務,請參閱Step Functions 式如何為整合式服務產生IAM原則。