概觀

問:什麼是 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 開發人員指南

問:我的工作流程含有一些標準工作流程的屬性,也有一些 Express 工作流程的屬性。我要如何取得充分利用這兩者呢?

您可以撰寫兩個工作流程類型:Express 工作流程可當作標準工作流程的子工作流程來執行。Express 工作流程是從父協調工作流程中的任務狀態叫用的,並從父項來看 Express 工作流程整體上為成功或是失敗。這將受該任務的父重試政策而定。您也可以從 Express 工作流程內部呼叫 Express 工作流程,只要所有工作流程不超過父項的持續時間限制。如果您的使用案例組合了長時間執行或只執行一次和短期高比率的步驟,您可選擇以此方式分解工作流程。 

比較

問︰何時應該使用 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 來使用程式設計結構為您建構非同步互動。 

問:何時應該使用 Express 工作流程與標準工作流程?

如果是高事件率與短持續時間的工作負載,您應該使用 Express 工作流程。Express 工作流程支援每秒超過 100,000 的事件率。Express 工作流程的最大持續時間為 5 分鐘。Express 工作流程保證每個工作流程步驟執行「至少一次」。失敗的工作流程必須從頭開始重新執行。Express 工作流程支援所有服務整合。Express 工作流程不支援活動、任務回合 (.sync) 和回呼模式。

在 AWS Step Functions 上的標準工作流程較適合於長時間執行、耐久和可稽核的工作流程,在這些工作流程中,重複工作流程步驟是昂貴 (例如重新啟動長時間執行的媒體轉碼) 或有害的 (例如向信用卡收取兩次費用)。範例工作負載包含訓練與部署機器學習模型、報告產生、計費、信用卡處理和命令與履行程序。標準工作流程保證每一個工作流程步驟只執行一次,最長的持續時間為 1 年。這些工作流程會追蹤與存放關於每個工作流程詳細的逐步資訊,您可在工作流程執行時或執行後檢查該工作流程。標準工作流程支援所有服務整合、活動與設計模式。

問:何時應該使用 AWS Step Functions?何時又該使用 AWS CodePipeline?

當您自動發行軟體或基礎設施變更,並想在發行工作流程中運用與 CodeBuild、CodeDeploy 等 CI/CD 服務和第三方 CI/CD 解決方案整合時,應考慮使用 AWS CodePipeline。受到 Amazon 部署實務的啟發,每個管道只會有一個執行個體,而且每個執行個體由連續階段組成。這些階段是一種鎖定機制,確保管道的關鍵部分在任何時候都只進行一項執行工作。CodePipeline 的手動核准支援會在階段內保留發行,並允許先前階段持續執行時進行手動測試。這種階段式模式也可讓您暫停所有發行,而不會產生冗長的發行佇列。CodePipeline 以智慧化方式發行最新的軟體變更,避免將時間浪費在過時的發行上。

相較之下,Step Functions 以原生方式支援狀態機器中多個同時執行的執行個體。這項功能可讓開發人員團隊同時建立和測試變更,以執行各項整合。然而,管理部署需要透過自訂解決方案來控制部署的順序。當您需要使用錯誤處理、平行化和分支等模式建立持續的整合工作流程時,應考慮使用 AWS Step Functions。Step Functions 支援與 AWS CodeBuild、Amazon ECS、Amazon EMR、AWS Glue 和其他服務的服務整合。如果您的工作流程需要建立軟體變更或執行資料處理應用程式,應考慮使用 Step Functions 搭配 AWS CodeBuild、Amazon ECS、Amazon EMR 和 AWS Glue 服務整合。

整合

問︰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 開發人員指南中的監控和記錄

問:如果 Express 工作流程因為用盡重試或未受管的例外情況而失敗,會有什麼情況發生?

透過預設,Express 工作流程會對 CloudWatch Logs 報告所有結果,包含工作流程輸入、輸出與完成的步驟。您可以選取不同層級的日誌,只用來記錄錯誤,並且您可以選擇不去紀錄輸入與輸出。用盡重試或發生不受管例外情況的工作流程,應該要從頭開始重新執行。 

安全性

問:我能否在不連上網際網路的情況下存取來自 Amazon VPC 幕後資源的 Step Functions?

Step Functions 也使用 AWS PrivateLink 支援 VPC 端點 (VPCE)。你可從啟用 VPC 的 AWS Lambda 函數和其他 AWS 服務存取 Step Functions,而無需穿越公共網際網路。欲了解詳情,請參考 AWS Step Functions 開發人員指南中的 AWS Step Functions 的 Amazon Virtual Private Cloud 端點

合規

問:Step Functions 支援哪些合規標準?

AWS Step Functions 符合 HIPAA、FedRAMP、SOC、GDPR 以及其他常見的合規標準。請參見 AWS 雲端安全網站,取得所支援的合規標準明細表。

開始使用 AWS Step Functions

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