本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用分布式 Map 处理 CSV 文件
本示例项目演示了如何使用分布式 Map 状态迭代使用 Lambda 函数生成的 CSV 文件的 1 万行。CSV 文件包含客户订单的配送信息,并存储在 Amazon S3 存储桶中。分布式 Map 对 CSV 文件中的 10 行进行批量迭代,以进行数据分析。
分布式 Map 包含一个 Lambda 函数,用于检测任何延迟订单。分布式 Map 还包含一个内联 Map,用于处理批次中的延迟订单,并以数组形式返回这些延迟订单。对于每个延迟订单,内联 Map 都会向 Amazon SQS 队列发送一条消息。最后,本示例项目会将 Map Run 结果存储到 Amazon Web Services 账户中的另一个 Amazon S3 存储桶中。
使用分布式 Map,一次最多可运行 1 万个并行子工作流。在本示例项目中,分布式 Map 的最大并发量设置为 1000,即限制为 1000 个并行子工作流执行。
此示例项目创建状态机、支持 Amazon 资源并配置相关的 IAM 权限。探索此示例项目,了解如何使用分布式 Map 编排大规模并行工作负载,或将其作为您自己项目的起点。
Amazon CloudFormation 模板和其他资源
您可以使用 CloudFormation 模板来部署此示例项目。此模板在您的中创建了以下资源 Amazon Web Services 账户:
-
一个 Step Functions 状态机。
-
状态机的执行角色。此角色授予您的状态机访问其他 Amazon Web Services 资源所需的权限,例如 Lambda 函数的 Invoke 操作。
-
一个名为
CSVGeneratorFunction
的 Lambda 函数,用于生成包含客户订单详细信息的 CSV 文件。 -
CSV 生成器 Lambda 函数的执行角色。此角色授予函数访问其他角色的权限 Amazon Web Services。
-
一个 Amazon S3 输入存储桶,用于存储生成的 CSV 文件。
-
延迟订单检测 Lambda 函数,用于分析 CSV 文件数据并检测任何延迟订单。
-
延迟订单 Lambda 函数的执行角色。此角色授予函数访问其他角色的权限 Amazon Web Services。
-
一个 Amazon S3 输出存储桶,用于存储客户订单分析结果。
-
一个 Amazon SQS 队列,Step Functions 为每个延迟的订单向该队列发送消息。这些消息包含客户及其订单的 ID。
-
存储与状态机执行历史相关的信息的 CloudWatch 日志组。
重要
标准费用适用于每项服务。
第 1 步:创建状态机并预置资源
打开 Step Functions 控制台
,然后选择创建状态机。 在搜索框中键入
Distributed Map to process a CSV file in S3
,然后从返回的搜索结果中选择分布式 Map 处理 S3 中的 CSV 文件。-
选择下一步以继续。
-
Step Functions 列出了您选择的示例项目中 Amazon Web Services 使用的。它还显示了示例项目的工作流图。将此项目部署到您的, Amazon Web Services 账户 或者将其用作构建您自己的项目的起点。根据您想继续的方式,选择运行演示或构建依据。
有关将为此示例项目创建的资源信息,请参阅 Amazon CloudFormation 模板和其他资源。
下图显示了分布式 Map 处理 S3 中的 CSV 文件示例项目的工作流图:
-
选择使用模板继续进行选择。
-
请执行以下操作之一:
-
如果您选择构建依据,Step Functions 将为您选择的示例项目创建工作流原型。Step Functions 不会部署工作流定义中列出的资源。
在 Workflow Studio 的设计模式下,从状态浏览器中拖放状态,继续构建工作流原型。或者切换到代码模式,该模式提供了一个类似于 VS Code 的集成代码编辑器,用于在 Step Functions 控制台中更新状态机的 Amazon States Language (ASL) 定义。有关使用 Workflow Studio 构建状态机的更多信息,请参阅使用 Workflow Studio。
重要
请记住,在运行工作流之前,为示例项目中使用的资源更新占位符 Amazon 资源名称 (ARN)。
-
如果您选择了 “运行演示”,Step Functions 将创建一个只读示例项目,该项目使用 Amazon CloudFormation 模板将该模板中列出的 Amazon 资源部署到您的 Amazon Web Services 账户。
提示
要查看示例项目的状态机定义,请选择代码。
准备就绪后,选择部署并运行以部署示例项目并创建资源。
创建这些资源和相关 IAM 权限可能需要长达 10 分钟的时间。在部署资源时,您可以打开 CloudFormation 堆栈 ID 链接以查看正在配置哪些资源。
创建示例项目中的所有资源后,您可以在状态机页面上看到新的示例项目。
重要
CloudFormation 模板中使用的每项服务都可能收取标准费用。
-
第 2 步:运行状态机
配置并部署完所有资源后,您可以运行状态机。
-
在状态机页面上,选择您的示例项目。
-
在示例项目页面上,选择启动执行。
-
在启动执行对话框中,执行以下操作:
-
(可选)以 JSON 格式键入输入值以运行您的示例项目。
如果您选择运行演示,则无需提供任何执行输入。
注意
如果您部署的演示项目包含预先填充的执行输入数据,请使用该输入来运行状态机。
-
选择启动执行。
-
(可选)Step Functions 控制台会将您引导到一个以您的执行 ID 为标题的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进展或者在执行完成后查看执行结果。
执行完成后,请在图表视图上选择各个状态,然后在步骤详细信息窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。
-
有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅“执行详细信息”页面 – 界面概述。
-
有关在控制台中查看分布式 Map 状态 执行的更多信息,请参阅检查 Map Run。
-
-
(可选)查看导出到 Amazon S3 存储桶的执行结果。这些结果包括数据,例如执行输入和输出、ARN 和执行状态。有关更多信息,请参阅 ResultWriter。
-