

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

# 什麼是 Step Functions？
<a name="welcome"></a>

**管理狀態和轉換資料**  
了解如何[使用變數在狀態與使用 JSONata 轉換資料之間傳遞資料](workflow-variables.md)。 [ JSONata](transforming-data.md)

您可以使用 AWS Step Functions建立工作流程，也稱為 [狀態機器](concepts-statemachines.md)，以建置分散式應用程式、自動化程序、協調微服務，以及建立資料和機器學習管道。

Step Functions 是以*狀態機器*和*任務*為基礎。在 Step Functions 中，狀態機器稱為*工作流程*，這是一系列的事件驅動步驟。工作流程中的每個步驟都稱為 *狀態*。例如，[任務狀態](state-task.md)代表另一個AWS服務執行的工作單位，例如呼叫另一個 AWS 服務或 API。執行任務之工作流程的執行個體在 Step Functions 中稱為*執行*。

狀態機器任務中的工作也可以使用 完成，[活動](concepts-activities.md)這是 Step Functions 外部存在的工作者。

![\[Step Functions 工作流程圖表的說明性範例。\]](http://docs.aws.amazon.com/zh_tw/step-functions/latest/dg/images/step-functions-example.png)


在 Step Functions 主控台中，您可以**視覺化**、編輯和偵錯應用程式的工作流程。您可以檢查工作流程中每個步驟的狀態，以確保您的應用程式依預期順序執行。

根據您的使用案例，您可以讓 Step Functions 呼叫AWS服務，例如 Lambda，來執行任務。您可以讓 Step Functions 控制AWS服務AWS Glue，例如建立擷取、轉換和載入工作流程。也可以為需要人為互動的應用程式建立長時間執行的自動化工作流程。

如需 Step Functions 可用AWS區域的完整清單，請參閱[AWS區域表](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

**了解如何使用 Step Functions**  
從本指南[入門教學課程](getting-started.md)中的 開始。如需進階主題和使用案例，請參閱 [Step Functions 研討會](https://catalog.workshops.aws/stepfunctions)中的模組。

## 標準和快速工作流程類型
<a name="welcome-workflows"></a>

Step Functions 有兩種工作流程類型：
+ **標準**工作流程非常適合長時間執行且可稽核的工作流程，因為它們會顯示執行歷史記錄和視覺化偵錯。

  標準工作流程具有**恰好一次的**工作流程執行，最多可執行**一年**。這表示標準工作流程中的每個步驟只會執行一次。
+ **快速**工作流程非常適合high-event-rate的工作負載，例如串流資料處理和 IoT 資料擷取。

  快速工作流程**at-least-once**工作流程，最多可執行**五分鐘**。這表示快速工作流程中的一或多個步驟可能執行超過一次，而工作流程中的每個步驟至少執行一次。


| 標準工作流程 | 快速工作流程 | 
| --- | --- | 
| 每秒 2，000 個執行率 | 每秒 100，000 個執行速率 | 
| 每秒 4，000 個狀態轉換率 | 幾乎無限制的狀態轉換率 | 
| 依狀態轉換定價 | 依執行次數和持續時間定價 | 
| 顯示執行歷史記錄和視覺化偵錯 | 根據日誌層級顯示執行歷史記錄和視覺化偵錯 | 
| 請參閱 Step Functions 中的執行歷史記錄 |  將執行歷史記錄傳送至 [CloudWatch](https://aws.amazon.com/cloudwatch/)  | 
| 支援與所有 服務的整合。支援與某些 服務的最佳化整合。 | 支援與所有 服務的整合。 | 
| 支援所有 服務的請求回應模式 支援在特定服務中*執行任務*和/或*等待回呼*模式 （如需詳細資訊，請參閱下一節）  | 支援所有 服務的請求回應模式 | 

如需 Step Functions 定價和選擇工作流程類型的詳細資訊，請參閱以下內容：
+ [AWS Step Functions 定價](https://aws.amazon.com/step-functions/pricing/)
+ [在 Step Functions 中選擇工作流程類型](choosing-workflow-type.md)

## 與其他 服務整合
<a name="welcome-service-integrations"></a>

Step Functions 與多個 AWS服務整合。若要呼叫其他 AWS服務，您可以使用兩種整合類型：
+ [AWSSDK 整合](supported-services-awssdk.md)可讓您直接從狀態機器呼叫任何AWS服務，讓您存取數千個 API 動作。
+ [最佳化整合](integrate-optimized.md)提供在您的狀態機器中使用這些服務的自訂選項。

若要將 Step Functions 與其他 服務結合，有三種**服務整合模式**：
+  [請求回應 （預設）](connect-to-resource.md#connect-default) 

  呼叫 服務，並讓 Step Functions 在收到 HTTP 回應後進入下一個狀態。
+ [執行任務 (.sync)](connect-to-resource.md#connect-sync)

  呼叫 服務，並讓 Step Functions 等待任務完成。
+ [使用任務字符 (.waitForTaskToken) 等待回呼](connect-to-resource.md#connect-wait-token)

  使用任務字符呼叫服務，並讓 Step Functions 等到任務字符與回呼一起傳回。

標準工作流程和快速工作流程支援相同的**整合**，但不支援相同的**整合模式**。
+  **標準工作流程**支援*請求回應*整合。某些服務支援*執行任務 (.sync)* 或*等待回呼 (.waitForTaskToken)*，在某些情況下也支援兩者。如需詳細資訊，請參閱下列最佳化整合資料表。
+  **Express Workflows** 僅支援*請求回應*整合。

 若要協助決定這兩種類型，請參閱 [在 Step Functions 中選擇工作流程類型](choosing-workflow-type.md)。



**AWSStep Functions 中的 SDK 整合**


| 整合式服務 | 請求回應 | 執行任務 - *.sync* | 等待回呼 - *.waitForTaskToken* | 
| --- | --- | --- | --- | 
| [超過 200 個服務](supported-services-awssdk.md#supported-services-awssdk-list) | 標準 & Express | 不支援 | 標準 | 

**Step Functions 中的最佳化整合**


| 整合式服務 | 請求回應 | 執行任務 - *.sync* | 等待回呼 - *.waitForTaskToken* | 
| --- | --- | --- | --- | 
| [Amazon API Gateway](connect-api-gateway.md) | 標準 & Express | 不支援 | 標準 | 
| [Amazon Athena](connect-athena.md) | 標準 & Express | 標準 | 不支援 | 
| [AWS Batch](connect-batch.md) | 標準 & Express | 標準 | 不支援 | 
| [Amazon Bedrock](connect-bedrock.md) | 標準 & Express | 標準 | 標準 | 
| [AWS CodeBuild](connect-codebuild.md) | 標準 & Express | 標準 | 不支援 | 
| [Amazon DynamoDB](connect-ddb.md) | 標準 & Express | 不支援 | 不支援 | 
| [Amazon ECS/Fargate](connect-ecs.md) | 標準 & Express | 標準 | 標準 | 
| [Amazon EKS](connect-eks.md) | 標準 & Express | 標準 | 標準 | 
| [Amazon EMR](connect-emr.md) | 標準 & Express | 標準 | 不支援 | 
| [Amazon EMR on EKS](connect-emr-eks.md) | 標準 & Express | 標準 | 不支援 | 
| [Amazon EMR Serverless](connect-emr-serverless.md) | 標準 & Express | 標準 | 不支援 | 
| [Amazon EventBridge](connect-eventbridge.md) | 標準 & Express | 不支援 | 標準 | 
| [AWS Glue](connect-glue.md) | 標準 & Express | 標準 | 不支援 | 
| [AWS Glue DataBrew](connect-databrew.md) | 標準 & Express | 標準 | 不支援 | 
| [AWS Lambda](connect-lambda.md) | 標準 & Express | 不支援 | 標準 | 
| [AWS Elemental MediaConvert](connect-mediaconvert.md) | 標準 & Express | 標準 | 不支援 | 
| [Amazon SageMaker AI](connect-sagemaker.md) | 標準 & Express | 標準 | 不支援 | 
| [Amazon SNS](connect-sns.md) | 標準 & Express | 不支援 | 標準 | 
| [Amazon SQS](connect-sqs.md) | 標準 & Express | 不支援 | 標準 | 
| [AWS Step Functions](connect-stepfunctions.md) | 標準 & Express | 標準 | 標準 | 

## 工作流程的範例使用案例
<a name="application"></a>

Step Functions 會管理應用程式的元件和邏輯，因此您可以撰寫較少的程式碼，並專注於快速建置和更新應用程式。下圖顯示 Step Functions 工作流程的六個使用案例。

![\[六個常見工作流程使用案例的視覺化範例，如以下文字所述。\]](http://docs.aws.amazon.com/zh_tw/step-functions/latest/dg/images/use-case-examples.png)




1. **協調任務** – 您可以建立工作流程，以特定順序協調一系列任務或*步驟*。例如，*任務 A* 可能是 Lambda 函數，可為*任務 B* 中的另一個 Lambda 函數提供輸入。 工作流程中的最後一個步驟會提供最終結果。

1. **根據資料選擇任務** – 使用 `Choice` 狀態，您可以讓 Step Functions 根據狀態的輸入做出決策。例如，假設客戶請求提高點數限制。如果請求超過您客戶的預先核准額度，您可以讓 Step Functions 將客戶的請求傳送給經理進行簽署。如果請求少於您客戶的預先核准額度，您可以讓 Step Functions 自動核准請求。

1. **錯誤處理 **(`Retry` / `Catch`) – 您可以重試失敗的任務，或擷取失敗的任務並自動執行替代步驟。

   例如，在客戶請求使用者名稱後，第一次呼叫您的驗證服務可能會失敗，因此您的工作流程可能會重試請求。當第二個請求成功時，工作流程可以繼續。

   或者，客戶請求的使用者名稱可能無效或無法使用，`Catch`陳述式可能會導致 Step Functions 工作流程步驟建議替代的使用者名稱。

   如需 `Retry`和 的範例`Catch`，請參閱 [處理 Step Functions 工作流程中的錯誤](concepts-error-handling.md)。

1. **循環中的人工** – Step Functions 可以在工作流程中包含人工核准步驟。例如，假設銀行客戶嘗試將資金傳送給朋友。[使用回呼和任務字符](connect-to-resource.md#connect-wait-token)，您可以讓 Step Functions 等待客戶朋友確認轉移，然後 Step Functions 將繼續工作流程，通知銀行客戶轉移已完成。

   如需範例，請參閱 [使用 Amazon SQS、Amazon SNS 和 Lambda 建立回呼模式範例](callback-task-sample-sqs.md)。

1. **平行步驟處理資料** – 使用 `Parallel` 狀態，Step Functions 可以平行步驟處理輸入資料。例如，客戶可能需要將影片檔案轉換為數個顯示解析度，所以瀏覽者可以在多個裝置上觀看影片。您的工作流程可以將原始影片檔案傳送至數個 Lambda 函數，或使用最佳化AWS Elemental MediaConvert整合同時將影片處理成多個顯示器解析度。

1. **動態處理資料元素** – Step Functions 可以使用 `Map` 狀態，對資料集中的每個項目執行一組工作流程步驟。反覆運算會平行執行，讓您可以快速處理資料集。例如，當您的客戶訂購三十個項目時，您的系統需要套用相同的工作流程來準備每個項目以供交付。收集並封裝所有項目以進行交付後，下一個步驟可能是快速將追蹤資訊的確認電子郵件傳送給客戶。

   如需**入門範本**範例，請參閱 [使用映射處理資料](sample-map-state.md)。