

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

# Map 状态工作流程。
<a name="state-map"></a>

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

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

**提示**  
要部署使用`Map`状态的工作流示例，请参阅工作* Amazon Step Functions 室*中使用 [Choice 和 Map 处理数据数组](https://catalog.workshops.aws/stepfunctions/choice-and-map)。

## Map 状态处理模式
<a name="concepts-map-process-modes"></a>

根据您希望如何处理数据集中的项目，Step Functions 为 `Map` 状态提供以下处理模式。
+ **内联** – 限制并发模式。在此模式下，`Map` 状态的每次迭代都在包含 `Map` 状态的工作流的上下文中运行。Step Functions 会将这些迭代的执行历史记录添加到父工作流的执行历史记录中。默认情况下，`Map` 状态以内联模式运行。

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

  有关更多信息，请参阅 [在 Step Functions 工作流程中以内联模式使用 Map 状态](state-map-inline.md)。
+ **分布式** – 高并发模式。在此模式下，`Map` 状态将每次迭代作为子工作流执行运行，从而实现多达 1 万个并行子工作流执行的高并发数。每个子工作流执行都有自己的、独立于父工作流的执行历史记录。

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

  有关更多信息，请参阅 [分布式模式](state-map-distributed.md)。

应使用的模式取决于您希望如何处理数据集中的项目。如果工作流的执行历史记录不超过 2.5 万个条目，或者需要的并发迭代次数不超过 40 次，则可以使用内联模式的 `Map` 状态。

当您需要编排满足以下任意条件组合的大规模并行工作负载时，请使用分布式模式的 `Map` 状态：
+ 数据集的大小超过 256 KiB。
+ 该工作流的执行事件历史记录超过 2.5 万个条目。
+ 您需要一个超过 40 次并行迭代的并发数。

### 内联模式和分布式模式的区别
<a name="concepts-inline-vs-distributed-map"></a>

下表突出显示了内联模式和分布式模式之间的区别。


| 内联模式 | 分布式模式 | 
| --- |--- |
| **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，对执行事件历史记录强制限制为 2.5 万个条目。 | 允许您无视有效负载大小限制，因为 `Map` 状态可以直接从 Amazon S3 数据来源读取输入。 在此模式下，您还可以无视执行历史记录的限制，因为 `Map` 状态启动的子工作流执行会保留自己的、独立于父工作流的执行历史记录。 | 
| **Monitoring and observability** | 
| --- |
|  您可以通过控制台或调用 `[GetExecutionHistory](https://docs.amazonaws.cn/step-functions/latest/apireference/API_GetExecutionHistory.html)` API 操作来查看工作流的执行历史记录。 您还可以通过 CloudWatch 和 X-Ray 查看执行历史记录。  | 当您运行分布式模式下的 `Map` 状态时，Step Functions 会创建一个 Map Run 资源。Map Run 是指*分布式 Map 状态*启动的一组子工作流执行。您可以在 Step Functions 控制台中查看 Map Run。您也可以调用 `[DescribeMapRun](https://docs.amazonaws.cn/step-functions/latest/apireference/API_DescribeMapRun.html)` API 操作。Map Run 还会向发送指标。 CloudWatch 有关更多信息，请参阅 [在 Step Function 中查看分布式 Map Run 执行](concepts-examine-map-run.md)。 | 