

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

# 在 Step Functions 中处理具有 Map 状态的队列中的数据
<a name="sample-map-state"></a>

在此示例工作流程中，[Map 状态工作流程。](state-map.md)处理队列中的数据，同时向订阅用户发送消息并将其存储在数据库中。

Step Functions 使用优化集成从某个 Amazon SQS 队列中提取消息。当消息可用时，[Choice](state-choice.md) 状态会将一组 JSON 消息传递到 [Map](state-map.md) 状态以进行处理。对于每条消息，状态机将消息写入 DynamoDB，从队列中移除消息，并将消息发布到 Amazon SNS 主题。

## 第 1 步：创建状态机
<a name="sample-map-state-create"></a>

1. 打开 [Step Functions 控制台](https://console.aws.amazon.com/states/home?region=us-east-1#/)，然后选择**创建状态机**。

1. 选择**从模板创建**，然后找到相关的入门模板。选择**下一步**以继续。

1. 选择模板使用方式：

   1. **运行演示** — 创建只读状态机。审核后，您可以创建工作流和所有相关资源。

   1. **构建依据** — 提供可编辑的工作流定义，您可借助自有资源对其进行审核、定制并部署。（**不会**自动创建函数或队列等相关资源。）

1. 选择**使用模板**继续进行选择。
**注意**  
*部署到您的账户的服务将会收取标准费用。*

## 第 2 步：订阅 Amazon SNS 主题
<a name="sample-map-subscribe-topic"></a>

**提示**  
在运行状态机**之前**，订阅 Amazon SNS 主题并将项目添加到 Amazon SQS 队列中。

1. 打开 [Amazon SNS 控制台](https://console.aws.amazon.com/sns/home)。

1. 选择**主题**，然后找到由示例项目创建的主题。

1. 选择**创建订阅**，然后对于**协议**，选择**电子邮件**。

1. 在**端点**下，输入您的电子邮件地址以订阅该主题。

1. 选择**创建订阅**。

1. 在电子邮件中确认订阅来激活订阅。

## 第 3 步：向 Amazon SQS 队列添加消息
<a name="sample-map-create-queue"></a>

1. 打开 [Amazon SQS 控制台](https://console.aws.amazon.com/sqs/home)。

1. 选择由示例项目创建的队列。

1. 选择**发送和接收消息**，输入消息并选择**发送消息**。重复此步骤来将多条消息添加到队列中。

## 第 4 步：运行状态机
<a name="sample-map-start-execution"></a>

**提示**  
Amazon SNS 中的队列具有最终一致性。将消息发送到队列后，可能需要等待几分钟，然后运行状态机。

如果您选择了**运行演示**选项，则所有相关资源都将部署并准备好运行。如果您选择了**构建依据**选项，则可能需要先设置占位符值并创建其他资源，然后才能运行自定义工作流。

1. 选择**部署并运行**。

1. 等待 CloudFormation 堆栈部署。这一过程耗时最多 10 分钟。

1. 出现**开始执行**选项后，查看**输入**并选择**开始执行**。

**恭喜您！**  
现在，您应该有了一个正在运行的状态机演示。您可以在**图表视图**中选择状态来查看输入、输出、变量、定义和事件。