AWS Step Functions 目前已全面供應

免費試用 AWS Step Functions

AWS Step Functions 免費方案包含每個月 4,000 次狀態轉換。 

查看 AWS 免費方案詳細資訊 »


問:什麼是 AWS Step Functions?

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

AWS Step Functions 會為您管理操作和基礎設施,以協助確保您的應用程式可用於任何規模。

問:當設計應用程式時使用服務協調來協調任務有哪些好處?

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

問:使用 AWS Step Functions 可以解決哪些使用案例?

AWS Step Functions 可協助處理能分成一系列步驟的任何運算問題或業務流程。常用案例包括:

  • 文件和資料處理 – 將來自多個資料庫的資料統整成一致的報告。將大型資料集純化並歸納成有用的格式。
  • DevOps – 建立用於持續整合和持續部署的工具。建立可自動回應基礎設施變更的事件導向應用程式。
  • 電子商務 – 自動化關鍵任務業務流程,例如訂單填寫和庫存追蹤。
  • Web 應用程式 – 實作健全的使用者註冊流程和登入身份驗證。

問:AWS Step Functions 如何運作?

使用 AWS Step Functions,您可以將應用程式定義為狀態機器,這是共同擷取應用程式行為的一系列步驟。狀態機器中的狀態可能是任務、連續步驟、平行步驟、分支路徑 (選擇) 和/或計時器 (等待)。任務是由多個工作單位組成,而此工作可能由 AWS Lambda 函數、任何類型的 Amazon EC2 執行個體、容器或現場部署伺服器來執行,能夠和 Step Functions API 通訊的任何項目都可被指派任務。視覺化主控台會依照執行順序自動繪製每個狀態,以便於設計多步驟應用程式。主控台會反白顯示每個步驟的即時狀態,並提供每個執行的詳細歷史記錄。Step Functions 會為您運作和擴展應用程式步驟與基本運算,以確保應用程式在需求增加時能可靠地執行。

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

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

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

AWS Batch 是 AWS 雲端中讓您輕鬆執行任何規模的批次運算工作流程的服務。當您想要將分散式應用程式建立成一系列步驟,包括連續、平行和/或分支邏輯 (選擇)時,應該使用 AWS Step Functions。您可以使用 Batch 在應用程式中執行任務,也可以使用 Step Functions 來提交彼此之間有相依性的多個 Batch 任務。當您想要自動管理運算基礎設施以擴展到所需的批次處理量時,請使用 Batch。

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

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

問:現有的 Amazon Simple Workflow Service (SWF) 會發生什麼事?

AWS 將繼續提供 Amazon Simple Workflow (SWF) 並支援所有 Amazon SWF 客戶。

問:AWS Step Functions 如何與其他 AWS 服務搭配使用?

AWS Step Functions 可與其他幾個 AWS 服務搭配使用,包括 AWS CloudFormation、AWS Lambda、Amazon EC2、Amazon EC2 Container Service (ECS)、Amazon API Gateway、Amazon CloudWatch、AWS CloudTrail 和 Auto Scaling。

下列是您可以使用各種 AWS 服務進行的一些工作:

  • 使用 AWS CloudFormation 啟動 AWS Step Functions 狀態機器和活動所需的多個相關資源。
  • 使用 Lambda 函數或在 EC2 或 ECS 容器執行的程式實作任務。
  • 在 Step Functions API 與 API Gateway API 中的方法之間建立關聯。
  • 擴展 AWS Step Functions 活動的 EC2 任務叢集以回應 CloudWatch 指標。

問:AWS Step Functions 如何與 AWS Lambda 搭配使用?

您可以使用 AWS Lambda 函數執行狀態機器內的任務。AWS Step Function 會將輸入傳遞到指定的 Lambda 函數,然後等待 Lambda 函數傳回結果。透過 Lambda,您可以使用 Lambda 支援的所有程式語言來建立任務,無須佈建或管理伺服器。要進一步了解使用 Step Functions 搭配 Lambda 的詳細資訊,請參閱我們的 Step Functions 文件

問:AWS Step Functions 如何與 Amazon EC2 及其他運算資源搭配使用?

狀態機器中所有工作都是由任務完成。任務可能是活動,其由任何語言編寫的任何程式碼組成。活動可在 Amazon EC2、Amazon ECS、行動裝置上託管,基本上就是可與 AWS Step Functions API 通訊的任何電腦。活動長輪詢 Step Functions 使用 API 呼叫來請求工作、接收輸入資料、執行工作以及傳回結果。

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

Amazon API Gateway 是一種全受管的服務,可讓開發人員輕鬆發佈、維護、監控和保護任何規模的 API。只要在 AWS 管理主控台按幾下,就能在 Step Functions API 與 API Gateway API 中的方法之間建立關聯。因此,當 HTTPS 請求傳送到您所定義的 API 方法時,API Gateway 便會叫用 Step Functions API 動作。

您可以使用 Amazon API Gateway API 啟動 Step Functions 狀態機器,以協調分散式後端應用程式的各個元件。您也可以將人為介入任務整合到應用程式步驟中,像是核准請求和回應。甚至可以向應用程式使用的服務 API 發出無伺服器非同步呼叫。

Amazon API Gateway 負責處理有關接受和處理數十萬個並行 API 呼叫的所有工作,包括流量管理、授權和存取控制、監控和 API 版本管理。

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

Amazon CloudWatch 是一項針對 AWS 服務和在 AWS 上執行的應用程式進行監控的服務。Amazon CloudWatch 可收集和追蹤指標、設定警示,以及自動對 AWS Step Functions 變更做出反應。

下列是您可以使用 Amazon CloudWatch 和 AWS Step Functions 進行的一些工作:

  • 監控 Step Functions 工作流程指標。
  • 啟動 Step Functions 工作流程以回應 CloudWatch Events。
  • 在 Step Functions 超過指標閾值時產生警示。
  • 使用 CloudWatch Events 為 Step Functions 工作流程進行排程的時間間隔最短可為一分鐘。

問:AWS Step Functions 是否可與現場部署資源搭配使用?

是。AWS Step Functions 應用程式可結合在資料中心執行的工作者以及雲端中執行的工作者。資料中心的工作者與任何雲端工作者會繼續照常執行。


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

要開始使用 AWS Step Functions,請移至 AWS Step Functions 詳細資訊頁面,然後按一下「免費試用」按鈕。如果沒有 Amazon Web Service 帳戶,系統將會提示您建立一個。登入之後,您可在 AWS Step Functions 主控台中執行逐步解說範例,此範例會逐步引導您執行建立狀態機器的步驟。從 AWS 管理主控台移至 AWS Step Functions。接下來選擇“Hello World”藍圖,然後新增一個“HelloWorld”Lambda 函數。現在您可以預覽和執行狀態機器。要開始在應用程式中使用 AWS Step Functions,請參閱 AWS Step Functions 文件

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

您可以使用任何程式設計語言來撰寫活動,只要您能夠使用 Web 服務 API 與 AWS Step Functions 通訊即可。為了方便,您可以使用適合您所選語言的 AWS 開發套件。AWS Lambda 支援以 Node.js (JavaScript)、Python 和 Java (與 Java 8 相容) 和 C# (使用 .NET Core 執行時間) 編寫的程式碼。狀態機器使用 Amazon States Language 以 JSON 定義。


問:如何驗證使用者?

AWS Step Functions 已與 AWS Identity and Access Management (IAM) 整合。IAM 政策可用來控制 Step Functions API 的存取。


問:使用 AWS Step Functions 的費用為何?

使用 AWS Step Functions,您只需為應用程式工作流程中一個步驟到下一個步驟之間的轉換付費,而這種轉換稱為狀態轉換。無論每個狀態持續多久 (最長 1 年),費用是以狀態轉換次數來計算,所以這樣很經濟實惠,並能從每天幾次執行輕鬆自動擴展到每月數千萬次執行。請參閱 AWS Step Functions 定價頁面了解詳細資訊。