使用分布式地图处理来自 Amazon S3 的CSV文件 - AWS Step Functions

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

使用分布式地图处理来自 Amazon S3 的CSV文件

此示例项目演示了如何使用分布式地图状态来迭代使用分布式地图生成的CSV文件的 10,000 多行 Lambda function。该CSV文件包含买家订单的配送信息,存储在 Amazon S3 存储桶中。分布式地图迭代CSV文件中一批 10 行,用于数据分析。

分布式地图包含 Lambda 用于检测任何延迟订单的功能。分布式 Map 还包含一个内联 Map,用于处理批次中的延迟订单,并以数组形式返回这些延迟订单。对于每个延迟的订单,Inline Map 都会向 Amazon SQS queue. 最后,此示例项目将 Map Run 结果存储到您的另一个 Amazon S3 存储桶中 AWS 账户.

使用分布式 Map,一次最多可运行 1 万个并行子工作流。在本示例项目中,分布式 Map 的最大并发量设置为 1000,即限制为 1000 个并行子工作流执行。

此示例项目创建了状态机,即支持 AWS 资源,并配置相关IAM权限。探索此示例项目,了解如何使用分布式 Map 编排大规模并行工作负载,或将其作为您自己项目的起点。

AWS CloudFormation 模板和其他资源

您可以使用 CloudFormation 模板来部署此示例项目。此模板在您的中创建以下资源 AWS 账户:

  • 一个 Step Functions 状态机。

  • 状态机的执行角色。此角色授予您的状态机访问其他状态机所需的权限 AWS 服务 以及诸如 Lambda 函数的 “调用” 操作之类的资源。

  • 一个名为的 Lambda 函数CSVGeneratorFunction,用于生成包含客户订单详情的CSV文件。

  • CSV生成器 Lambda 函数的执行角色。此角色授予函数访问其他角色的权限 AWS 服务.

  • 用于存储生成的CSV文件的 Amazon S3 输入存储桶。

  • 延迟订单检测 Lambda 函数,用于分析CSV文件数据并检测任何延迟订单。

  • 延迟订单 Lambda 函数的执行角色。此角色授予函数访问其他角色的权限 AWS 服务.

  • 一个 Amazon S3 输出存储桶,用于存储客户订单分析结果。

  • 一个亚马逊SQS队列,Step Functions 为每个延迟的订单向该队列发送消息。这些消息包含IDs客户及其订单的信息。

  • 存储与状态机执行历史相关的信息的 CloudWatch 日志组。

重要

标准费用适用于每项服务。

第 1 步:创建状态机并预置资源

  1. 打开 Step Functions 控制台,然后选择创建状态机

  2. Distributed Map to process a CSV file in S3在搜索框中键入,然后选择 “分布式地图” 以处理返回的搜索结果中的 S3 中的CSV文件

  3. 选择下一步以继续。

  4. 选择 “运行演示” 以创建只读和 ready-to-deploy 工作流程,或者选择 “在其上构建” 以创建可编辑的状态机定义,您可以在此基础上构建并稍后部署。

    有关将为此示例项目创建的资源信息,请参阅 AWS CloudFormation 模板和其他资源

    下图显示了分布式地图处理 S3 示例项目中CSV文件的工作流程图:

    处理 S3 示例项目中CSV文件的分布式地图的工作流程图。
  5. 选择使用模板继续进行选择。

后续步骤取决于您之前的选择:

  1. 运行演示 — 您可以先查看状态机,然后再使用部署的资源创建只读项目 AWS CloudFormation 给你的 AWS 账户.

    您可以查看状态机定义,准备就绪后,选择部署并运行以部署项目并创建资源。

    部署最多可能需要 10 分钟才能创建资源和权限。您可以使用堆栈 ID 链接来监控进度 AWS CloudFormation.

    部署完成后,您应该会在控制台中看到您的新状态机。

  2. 在此基础上再接再厉 — 您可以查看和编辑工作流程定义。在尝试运行自定义工作流程之前,您可能需要为示例项目中的占位符设置值。

注意

部署到您的账户的服务可能会收取标准费用。

第 2 步:运行状态机

配置并部署完所有资源后,您可以运行状态机。

  1. 状态机页面上,选择您的示例项目。

  2. 在示例项目页面上,选择启动执行

  3. 启动执行对话框中,执行以下操作:

    1. (可选)以JSON格式输入输入值以运行您的示例项目。

      如果您选择运行演示,则无需提供任何执行输入。

      注意

      如果您部署的演示项目包含预先填充的执行输入数据,请使用该输入来运行状态机。

    2. 选择启动执行

    3. (可选)Step Functions 控制台会将您引导到一个以您的执行 ID 为标题的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进展或者在执行完成后查看执行结果。

      执行完成后,请在图表视图上选择各个状态,然后在步骤详细信息窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。

      • 有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅执行详情概述

      • 有关在控制台中查看分布式 Map 状态 执行的更多信息,请参阅查看地图运行情况

    4. (可选)查看导出到 Amazon S3 存储桶的执行结果。这些结果包括数据,例如执行输入和输出ARN以及执行状态。有关更多信息,请参阅 ResultWriter (地图)