Map 状态工作流程。 - AWS Step Functions

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

Map 状态工作流程。

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

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

提示

要部署使用Map状态的工作流示例,请参阅工作 AWS 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 执行