Map 状态工作流程。 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Map 状态工作流程。

使用 Map 状态,为数据集中的每个项目运行一组工作流步骤。Map 状态的迭代是并行运行的,从而可以快速处理数据集。Map 状态可以使用多种输入类型,包括 JSON 数组、Amazon S3 对象列表或 CSV 文件。

Step Functions 为在工作流中使用 Map 状态提供了两种类型的处理模式:内联模式和分布式模式。

提示

要部署使用Map状态的工作流示例,请参阅工作 Amazon Step Functions 室中使用 Choice 和 Map 处理数据数组

Map 状态处理模式

根据您希望如何处理数据集中的项目,Step Functions 为 Map 状态提供以下处理模式。

  • 内联 – 限制并发模式。在此模式下,Map 状态的每次迭代都在包含 Map 状态的工作流的上下文中运行。Step Functions 会将这些迭代的执行历史记录添加到父工作流的执行历史记录中。默认情况下,Map 状态以内联模式运行。

    在此模式下,Map 状态仅接受 JSON 数组作为输入。此外,此模式最多支持 40 次并发迭代。

    有关更多信息,请参阅 在 Step Functions 工作流程中以内联模式使用 Map 状态

  • 分布式 – 高并发模式。在此模式下,Map 状态将每次迭代作为子工作流执行运行,从而实现多达 1 万个并行子工作流执行的高并发数。每个子工作流执行都有自己的、独立于父工作流的执行历史记录。

    在此模式下,Map 状态可以接受 JSON 数组或 Amazon S3 数据来源(例如 CSV 文件)作为其输入。

    有关更多信息,请参阅 分布式模式

应使用的模式取决于您希望如何处理数据集中的项目。如果工作流的执行历史记录不超过 2.5 万个条目,或者需要的并发迭代次数不超过 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 状态将每次迭代作为子工作流执行运行,从而实现多达 1 万个并行子工作流执行的高并发数。每个子工作流执行都有自己的、独立于父工作流的执行历史记录。

Maximum concurrency for parallel iterations

允许尽可能同时运行多达 40 次迭代。

允许运行多达 1 万个并行子工作流执行,一次处理数百万个数据项。

Input payload and event history sizes

在输入有效载荷大小上限为 256 KiB,在执行事件历史记录中强制执行 25,000 个条目的限制。

允许您无视有效负载大小限制,因为 Map 状态可以直接从 Amazon S3 数据来源读取输入。

在此模式下,您还可以无视执行历史记录的限制,因为 Map 状态启动的子工作流执行会保留自己的、独立于父工作流的执行历史记录。

Monitoring and observability

您可以通过控制台或调用 GetExecutionHistory API 操作来查看工作流的执行历史记录。

您还可以通过 CloudWatch 和 X-Ray 查看执行历史记录。

当您运行分布式模式下的 Map 状态时,Step Functions 会创建一个 Map Run 资源。Map Run 是指分布式 Map 状态启动的一组子工作流执行。您可以在 Step Functions 控制台中查看 Map Run。您也可以调用 DescribeMapRun API 操作。Map Run 还会向发送指标。 CloudWatch

有关更多信息,请参阅 在 Step Function 中查看分布式 Map Run 执行