映射工作流程狀態 - AWS Step Functions

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

映射工作流程狀態

使用 Map 狀態,為資料集中的每個項目執行一組工作流程步驟。Map 狀態的反覆運算會平行執行,讓您可以快速處理資料集。 Map 狀態可以使用各種輸入類型,包括 JSON 陣列、Amazon S3 物件清單或 CSV 檔案。

Step Functions 提供兩種在工作流程中使用 Map 狀態的處理模式:內嵌模式和分散式模式。

提示

若要部署使用 Map 狀態的工作流程範例,請參閱 AWS Step Functions 研討會中的使用選擇和映射處理資料陣列

映射狀態處理模式

Step Functions 會根據您希望如何處理資料集中的項目,為 Map 狀態提供下列處理模式。

  • 內嵌 – 有限並行模式。在此模式中,狀態的每個反覆運算都會在包含 Map 狀態的工作流程內容中Map執行。Step Functions 會將這些反覆運算的執行歷史記錄新增至父工作流程的執行歷史記錄。根據預設,Map狀態會以內嵌模式執行。

    在此模式中, Map 狀態只接受 JSON 陣列做為輸入。此外,此模式支援最多 40 個並行反覆運算。

    如需詳細資訊,請參閱在 Step Functions 工作流程的內嵌模式中使用映射狀態

  • 分散式 – 高並行模式。在此模式中, Map 狀態會以子工作流程執行的方式執行每個反覆運算,可實現高達 10,000 個平行子工作流程執行的高並行。每個子工作流程執行都有自己的獨立執行歷史記錄,與父工作流程的執行歷史記錄不同。

    在此模式中, Map 狀態可接受 JSON 陣列或 Amazon S3 資料來源作為其輸入,例如 CSV 檔案。

    如需詳細資訊,請參閱分散式模式

您應該使用的模式取決於您希望如何處理資料集中的項目。如果工作流程的執行歷史記錄不超過 25,000 個項目,或者您不需要超過 40 個並行反覆運算,請在內嵌模式中使用 Map 狀態。

當您需要協調符合下列任一條件組合的大規模平行工作負載時,請在分散式模式中使用 Map 狀態:

  • 資料集的大小超過 256 KiB。

  • 工作流程的執行事件歷史記錄會超過 25,000 個項目。

  • 您需要並行超過 40 個並行反覆運算。

內嵌模式和分散式模式差異

下表重點介紹內嵌和分散式模式之間的差異。

內嵌模式 分散式模式
Supported data sources

接受從工作流程中上一個步驟傳遞的 JSON 陣列做為輸入。

接受以下資料來源做為輸入:

  • 從工作流程中上一個步驟傳遞的 JSON 陣列

  • Amazon S3 儲存貯體中包含陣列的 JSON 檔案

  • Amazon S3 儲存貯體中的 CSV 檔案

  • Amazon S3 物件清單

  • Amazon S3 清查

Map iterations

在此模式中,狀態的每個反覆運算都會在包含 Map 狀態的工作流程內容中Map執行。Step Functions 會將這些反覆運算的執行歷史記錄新增至父工作流程的執行歷史記錄。

在此模式中, Map 狀態會以子工作流程執行的方式執行每個反覆運算,可實現高達 10,000 個平行子工作流程執行的高並行。每個子工作流程執行都有自己的獨立執行歷史記錄,與父工作流程的執行歷史記錄不同。

Maximum concurrency for parallel iterations

可讓您盡可能同時執行最多 40 個反覆運算。

可讓您執行最多 10,000 個平行子工作流程執行,一次處理數百萬個資料項目。

Input payload and event history sizes

對輸入承載大小和執行事件歷史記錄中的 25,000 個項目強制執行 256 KiB 的限制。

可讓您克服承載大小限制,因為 Map 狀態可以直接從 Amazon S3 資料來源讀取輸入。

在此模式中,您也可以克服執行歷史記錄限制,因為由 Map 狀態啟動的子工作流程執行會維護自己的執行歷史記錄,以及父工作流程的執行歷史記錄。

Monitoring and observability

您可以從主控台或叫用 GetExecutionHistory API 動作來檢閱工作流程的執行歷史記錄。

您也可以透過 CloudWatch 和 X-Ray 檢視執行歷史記錄。

當您在分散式模式下執行 Map 狀態時,Step Functions 會建立 Map Run 資源。Map Run 是指分散式映射狀態啟動的一組子工作流程執行。您可以在 Step Functions 主控台中檢視 Map Run。您也可以叫用 DescribeMapRun API 動作。Map Run 也會向 CloudWatch 發出指標。

如需詳細資訊,請參閱在 Step Functions 中檢視分散式映射執行