概觀

問:什麼是 AWS Step Functions?

AWS Step Functions 是一種全受管服務,可讓您使用視覺化的工作流程,輕鬆地協調分散式應用程式與微型服務的元件。使用可執行獨立功能的個別元件建立應用程式,能助您輕鬆地擴展及迅速變更應用程式。Step Functions 是協調元件與逐步執行應用程式函數的可靠方式。Step Functions 提供圖形式主控台,可將應用程式元件安排並視覺化成一連串的步驟。這讓建立和執行多步驟應用程式的工作變得簡單。Step Functions 會自動觸發和追蹤每個步驟,並在發生錯誤時重試,讓您的應用程式能如預期依序執行。Step Functions 會記錄每個步驟的狀態,一旦有哪個環節出了差錯,您就能迅速診斷並偵錯問題。您甚至不必撰寫程式碼,就能變更及新增步驟,所以您能輕鬆開發應用程式,並加快創新速度。

問︰設計應用程式時使用協調有哪些好處?

將應用程式細分為多個服務元件 (或步驟) 可確保一個元件失敗時不會讓整個系統當機,每個元件能夠獨立擴展,還可以更新個別元件,不需要在每次變更後重新部署整個系統。服務元件的協調包括根據應用程式的邏輯流程來管理執行相依性、排程及並行。在這類應用程式中,開發人員可利用服務協調來這樣做以及處理失敗情形。

問︰常見的 AWS Step Functions 使用案例有哪些?

AWS Step Functions 可協助處理能分成一系列步驟的任何運算問題或業務流程。它還可用於建立端對端工作流,以管理具有相依性的任務。常用案例包括:

  • 資料處理:將來自多個資料庫的資料整合到統一報告中,將大型資料集細化並減少為有用的格式,或協調多步驟分析和機器學習工作流程
  • DevOps 和 IT 自動化:建立用於持續整合和持續部署的工具,或建立自動回應基礎設施變化的事件驅動應用程式
  • 電子商務:自動化關鍵任務業務流程,例如訂單填寫和庫存追蹤
  • Web 應用程式:實作健全的使用者註冊流程和登入身份驗證

如需更多詳細資訊,請瀏覽 AWS Step Functions 使用案例客戶見證

問:AWS Step Functions 如何運作?

使用 AWS Step Functions,您可以定義狀態機器。狀態機器將工作流程描述為一系列步驟,並描述它們關係以及它們的輸入和輸出。狀態機器包含許多狀態,每個狀態代表工作流程圖中的單個步驟。狀態可以執行工作,做出選擇,傳遞參數,啟動平行執行,管理超時或終止工作流程 (可能成功也可能失敗)。視覺化主控台會依照執行順序自動繪製每個狀態,以便於設計多步驟應用程式。主控台會反白顯示每個步驟的即時狀態,並提供每個執行的詳細歷史記錄。如需更多資訊,請參閱 AWS Step Functions 開發人員指南中的 Step Functions 如何工作

問︰AWS Step Functions 如何連接到我的資源?

您可以使用活動任務和服務任務設定狀態機器,讓其執行工作。活動任務允許您將工作流程中的特定步驟分配給在其他位置執行的程式碼 (稱為活動工作者)。活動工作者可以是託管在任何地方、能夠進行 HTTP 連接的任何應用程式。例如,活動工作者可以在 Amazon EC2 執行個體、行動裝置或現場部署伺服器上執行。活動工作者就工作輪詢 Step Functions,從 Step Functions 中獲取任何輸入,使用您的程式碼執行工作並返回結果。由於活動工作者請求工作,因此很容易使用部署在防火牆後面的工作者。

服務任務允許您將工作流程中的步驟連接到支援的 AWS 服務。Step Functions 將請求推送到其他服務,以便它們可以為您的工作流程執行動作,等待服務任務完成,然後繼續執行下一步。

AWS Step Functions 狀態機器可以包含活動任務和服務任務的組合。AWS Step Functions 應用程式還可以結合在資料中心執行的活動工作者與在雲端中執行的服務任務。資料中心的工作者與任何雲端服務工作者會繼續照常執行。

問:如何開始使用 AWS Step Functions?

您可以透過多種方式開始使用 AWS Step Functions:

問:AWS Step Functions 使用何種語言?

AWS Step Functions 狀態機使用宣告式 Amazon StatesLanguage 在 JSON 中定義。建立活動工作者時,您可以使用任何程式設計語言,只要您能夠使用 Web 服務 API 與 AWS Step Functions 通訊即可。為了方便,您可以使用適合您所選語言的 AWS 開發套件。AWS Lambda 支援以 Node.js (JavaScript)、Python、Golang (Go) 和 C# (使用 .NET Core 執行時間和其他語言) 編寫的程式碼。如需 Lambda 程式設計模型的更多資訊,請參閱 AWS Lambda 開發人員指南。 

比較

問︰何時應該使用 AWS Step Functions 與Amazon SQS?

當您開發可高度擴展和可稽核的應用程式時,若需協調服務元件,則應考慮使用 AWS Step Functions。當您需要可靠、可高度擴展、託管的佇列以便在服務之間傳送、存放和接收訊息時,則應考慮使用 Amazon Simple Queue Service (Amazon SQS)。Step Functions 會追蹤應用程式中的所有任務和事件。Amazon SQS 則需要自行實作應用程式層級追蹤,特別在應用程式使用多個佇列時。Step Functions 主控台和可見性 API 提供以應用程式為中心的檢視,讓您可以搜尋執行,深入檢視執行的詳細資訊以及管理執行。Amazon SQS 需要實作這類額外功能。Step Functions 提供了一些可加速應用程式開發的功能,例如,在各任務之間傳送資料以及分發任務的彈性。Amazon SQS 需要實作一些應用程式層級的功能。雖然您可以使用 Amazon SQS 建置基本工作流程以協調分散式應用程式,但 Step Functions 本身即具有此設備以及其他應用程式層級功能。

問︰何時應該使用 AWS Step Functions 與Amazon Simple Workflow Service (SWF)?

您應該考慮為所有新應用程式使用 AWS Step Functions,因為它提供更具生產力和更靈活的方法,利用視覺化工作流程來協調應用程式元件。如果您需要外部信號來介入程序,或是想要啟動子程序將結果傳回父程序,則應考慮使用 Amazon Simple Workflow Service (Amazon SWF)。利用 Amazon SWF 就不需要以宣告式 JSON 撰寫狀態機器,而是撰寫決策程式,將活動步驟與決策步驟區分開來。這讓您可以完全控制協調邏輯,但會增加開發應用程式的複雜程度。您可以使用所選的程式設計語言來撰寫決策程式,或是以 Flow Framework 來使用程式設計結構為您建構非同步互動。 

整合

問︰AWS Step Functions 如何連接和協調其他 AWS 服務?

使用 AWS Step Functions 建立的工作流程可以透過服務任務連接和協調其他 AWS 服務。例如,您可以:

  • 叫用 AWS Lambda 函數
  • 執行 Amazon Elastic Container Service 或 AWS Fargate 任務
  • 從 Amazon DynamoDB 表中獲取現有項目或將新項目放入 DynamoDB 表中
  • 提交 AWS Batch 任務並等待其完成
  • 將訊息發佈到 Amazon SNS 主題
  • 將訊息傳送到 Amazon SQS 佇列
  • 啟動 AWS Glue 任務執行
  • 建立 Amazon SageMaker 任務以訓練機器學習模型或批次轉換資料集

如需了解使用 Step Functions 連接到其他 AWS 服務的更多資訊,請參閱「Step Functions 開發人員指南」。您還可以在執行應用程式的狀態機器中建立任務,請參閱概觀部分中的常見問答集:AWS Step Functions 如何連接到我的資源?

問:AWS Step Functions 如何與 Amazon API Gateway 搭配運作?

您可以將 Step Functions API 與 Amazon API Gateway 關聯,以便在將 HTTPS 請求傳送到您定義的 API 方法時,這些 API 會叫用狀態機器。您可以使用 Amazon API Gateway API 啟動協調分散式後端應用程式元件的 Step Functions 狀態機器,並將人工活動任務整合到應用程式的步驟中,例如批准請求和回應。也可以向應用程式使用的服務 API 發出無伺服器非同步呼叫。如需更多資訊,請參閱我們的教學:使用 API Gateway 建立 Step Functions API。 

問︰AWS Step Functions 的日誌和監控如何工作?

AWS Step Functions 將指標傳送到 Amazon CloudWatch 和 AWS CloudTrail 以進行應用程式監控。Amazon CloudWatch 可收集和追蹤指標、設定警示,以及自動對 AWS Step Functions 變更做出反應。AWS CloudTrail 將 Step Functions 的所有 API 呼叫捕獲為事件,包括來自 Step Functions 主控台的呼叫以及對 Step Functions API 的程式碼呼叫。Step Functions 還支援工作流程中每個整合服務的 Amazon CloudWatch Events 受管規則,並將根據需要在您的 AWS 帳戶中建立和管理 CloudWatch Events 規則。如需更多資訊,請參閱 AWS Step Functions 開發人員指南中的監控和日誌。 

安全性

問︰我如何保護工作流程?

AWS Step Functions 已與 AWS Identity and Access Management (AWS IAM) 整合。可以使用 IAM 政策控制對 Step Functions API 的存取,當您在 AWS Step Functions 主控台中建立狀態機器時,Step Functions 將根據狀態機器定義中使用的資源推薦 IAM 政策。如需更多資訊,請參閱 AWS Step Functions 開發人員指南中的連接服務的 IAM 政策。 

開始使用 AWS Step Functions

瀏覽入門頁面
準備好開始使用了嗎?
登入 AWS Step Functions 主控台
還有其他問題嗎?
聯絡我們