

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

# 探索 Step Functions 工作流程的使用案例
<a name="use-cases"></a>

透過 AWS Step Functions，您可以建置工作流程來管理一段時間的狀態、根據傳入的資料做出決策，以及處理錯誤和例外狀況。

**Topics**
+ [資料處理](#use-cases-data-processing)
+ [機器學習](#use-cases-machine-learning)
+ [微服務協同運作](#use-cases-orchestration)
+ [IT 和安全自動化](#use-cases-security-automation)

## 資料處理
<a name="use-cases-data-processing"></a>

隨著資料量從各種來源成長，組織需要更快地處理資料，以便快速做出明智的商業決策。若要大規模處理資料，組織需要彈性佈建資源，以管理從行動裝置、應用程式、衛星、行銷和銷售、營運資料存放區、基礎設施等接收到的資訊。

透過水平擴展和容錯工作流程，Step Functions 可以操作數百萬個並行執行。您可以使用具有 `平行工作流程狀態` 狀態的平行執行更快速地處理資料。或者，您可以使用 `映射工作流程狀態` 狀態的動態平行處理來反覆運算資料存放區中的大型資料集，例如 Amazon S3 儲存貯體。Step Functions 也提供重試失敗執行的功能，或選擇特定路徑來處理錯誤，而無需管理複雜的錯誤處理程序。

Step Functions 會直接與 提供的其他資料處理服務整合，AWS例如[AWS Batch](connect-batch.md)用於批次處理、用於大數據處理的 [Amazon EMR](connect-emr.md)、[AWS Glue](connect-glue.md)用於資料準備、用於資料分析的 [Athena](connect-athena.md)，以及[AWS Lambda](connect-lambda.md)用於運算。

客戶使用 Step Functions 完成的資料處理工作流程類型範例包括：

**檔案、影片和影像處理**
+ 取得影片檔案的集合，並將其轉換為最適合顯示裝置的其他大小或解析度，例如行動電話、筆記型電腦或電視。
+ 拍攝使用者上傳的大量相片，並將其轉換為縮圖或各種解析度影像，然後顯示在使用者的網站上。
+ 取得半結構化資料，例如 CSV 檔案，並將其與發票等非結構化資料結合，以產生每月傳送給業務利益相關者的業務報告。
+ 採用地球觀察從衛星收集的資料，將其轉換為彼此一致的格式，然後新增地球上收集的其他資料來源，以獲得更多洞見。
+ 從各種運輸模式取得產品運輸日誌，並使用 Monte Carlo 模擬尋找最佳化，然後將報告傳回給依賴您運送其商品的組織和人員。

**座標擷取、轉換和載入 (ETL) 任務：**
+ 透過一系列使用 的資料準備步驟，結合銷售機會記錄與行銷指標資料集AWS Glue，並產生可在組織中使用的商業智慧報告。
+ 建立、啟動和終止 Amazon EMR 叢集以進行大數據處理。

**批次處理和高效能運算 (HPC) 工作負載：**
+ 建置基因體輔助分析管道，將原始的整個基因體序列處理為變體呼叫。將原始檔案與參考序列對齊，並使用動態平行處理在指定的内節清單上呼叫變體。
+ 透過使用不同的電氣和化學化合物模擬各種配置，來尋找下一個行動裝置或其他電子元件的生產效率。透過各種模擬執行工作負載的大型批次處理，以取得最佳設計。

## 機器學習
<a name="use-cases-machine-learning"></a>

機器學習為組織提供了一種方法，可以快速分析收集的資料，以識別模式並以最少的人為介入做出決策。機器學習從一組初始資料開始，稱為*訓練資料*。訓練資料可提高機器學習模型的預測準確性，並做為模型學習的基礎。在訓練模型視為足夠準確以滿足業務需求之後，您可以將模型部署到生產環境中。[AWSGithub 上的 Step Functions 資料科學專案](https://github.com/aws/aws-step-functions-data-science-sdk-python)是一個開放原始碼程式庫，提供工作流程，可使用 Amazon SageMaker AI 和 Step Functions 預先處理資料、訓練和發佈模型。

預先處理現有資料集是組織經常建立訓練資料的方式。此預先處理方法會新增資訊，例如標記影像中的物件、註釋文字或處理音訊。若要預先處理您可以使用的資料AWS Glue，或者您可以建立在 Jupyter 筆記本中執行的 SageMaker AI 筆記本執行個體。資料準備就緒後，即可上傳至 Amazon S3 進行存取。隨著機器學習模型的訓練，您可以調整每個模型的參數，以提高準確性。

Step Functions 提供在 SageMaker AI 上協調end-to-end機器學習工作流程的方法。這些工作流程可能包括資料預先處理、後製處理、功能工程、資料驗證和模型評估。在模型部署到生產環境之後，您可以精簡和測試新方法，以持續改善業務成果。您可以直接在 Python 中建立生產就緒的工作流程，也可以使用 Step Functions 資料科學 SDK 複製該工作流程、試驗新選項，並將精簡的工作流程放在生產中。

客戶針對 使用 Step Functions 的一些機器學習工作流程類型包括：

**詐騙偵測**
+ 識別並防止發生詐騙交易，例如信用詐騙。
+ 使用訓練過的機器學習模型偵測和防止帳戶接管。
+ 識別促銷濫用，包括建立仿造帳戶，以便您可以快速採取行動。

**個人化和建議**
+ 根據預測來吸引客戶的興趣，向目標客戶推薦產品。
+ 預測客戶是否會將其帳戶從免費方案升級至付費訂閱。

**資料擴充**
+ 使用資料擴充作為預先處理的一部分，以提供更好的訓練資料，以實現更準確的機器學習模型。
+ 註釋文字和音訊摘錄以新增語法資訊，例如 sarcasm 和 slang。
+ 在影像中標記其他物件，以提供模型學習的關鍵資訊，例如物件是蘋果、籃球、石頭或動物。

## 微服務協同運作
<a name="use-cases-orchestration"></a>

Step Functions 為您提供管理微服務工作流程的選項。

微服務架構會將應用程式分成鬆散耦合的服務。優點包括改善可擴展性、提高彈性，以及更快的上市時間。每個微服務都是獨立的，可讓您輕鬆地擴展單一服務或函數，而無需擴展整個應用程式。個別服務鬆散耦合，因此獨立團隊可以專注於單一業務流程，而無需了解整個應用程式。

Microservices 也提供符合您業務需求的個別元件，讓您在不重寫整個工作流程的情況下保有彈性。不同的團隊可以使用自己選擇的程式設計語言和架構來使用微服務。

對於長時間執行的工作流程，您可以使用標準工作流程與AWS Fargate整合來協調在容器中執行的應用程式。對於需要立即回應的短期、大量工作流程，[同步快速工作流程](choosing-workflow-type.md#concepts-express-synchronous)是理想的選擇。其中一個範例是 Web 型或行動應用程式，需要先完成一系列步驟，才能傳回回應。您可以直接從 Amazon API Gateway 觸發同步快速工作流程，並保持連線開啟，直到工作流程完成或逾時為止。對於不需要立即回應的短期工作流程，Step Functions 會提供非同步快速工作流程。

使用 Step Functions 的一些 API 協調的範例包括：

**同步或即時工作流程**
+ 變更記錄中的值，例如更新員工的姓氏並立即顯示變更。
+ 在結帳時更新訂單，例如新增、移除或變更項目的數量；然後立即向您的客戶顯示更新的購物車。
+ 執行快速處理任務，並立即將結果傳回給申請者。

**容器協同運作**
+ 使用 Amazon Elastic Kubernetes Service 在 Kubernetes 上執行任務，或使用 Fargate 在 Amazon Elastic Container Service (ECS) 上執行AWS任務，並與其他服務整合，例如使用 Amazon SNS 傳送通知，作為相同工作流程的一部分。

## IT 和安全自動化
<a name="use-cases-security-automation"></a>

使用 Step Functions，您可以建立工作流程，自動擴展和回應工作流程中的錯誤。您的工作流程可以自動[重試失敗的任務](concepts-error-handling.md#error-handling-retrying-after-an-error)[，並使用指數退避](concepts-error-handling.md#error-handling-examples)來處理錯誤。

在 IT 自動化案例中，錯誤處理對於管理複雜且耗時的作業至關重要，例如升級和修補軟體、部署安全更新以解決漏洞、選取基礎設施、同步資料和路由支援票證。透過自動化重複且耗時的任務，您的組織可以快速且一致地大規模完成例行操作。您的重點可以轉移到策略工作，例如功能開發、複雜的支援請求和創新，同時滿足您的營運需求。

當工作流程需要人工介入才能繼續時，例如核准大幅增加的額度時，您可以在 Step Functions 中定義分支邏輯，以便自動核准限制以下的請求，且限制的請求需要人工核准。需要人工核准時，Step Functions 可以暫停工作流程、等待人工回應，然後在收到回應後繼續工作流程。

自動化工作流程的一些範例包括下列項目：

**IT 自動化**
+ 自動修復事件，例如開放 SSH 連接埠、低磁碟空間或授予 Amazon S3 儲存貯體的公開存取。
+ 自動化AWS CloudFormationStackSets 的部署。

**安全自動化**
+ 自動化對已公開使用者和使用者存取金鑰之案例的回應。
+ 根據政策動作自動修復安全事件回應，例如將動作限制為特定 ARNs。
+ 在收到網路釣魚電子郵件後的幾秒鐘內警告員工。

**人工核准**
+ 自動化機器學習模型訓練，然後在部署更新後的模型之前，先取得資料科學家對模型的核准。
+ 根據情緒分析自動化客戶意見回饋路由，以便快速呈報負面評論以供審核。