同时迭代 Step Functions 工作流程中的项目 - AWS Step Functions

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

同时迭代 Step Functions 工作流程中的项目

在前面的主题中定义并行任务,您学习了如何使用Parallel状态并行运行不同的步骤分支。使用 Map 状态,您可以为数据集中的每个项目运行一组工作流步骤。 Map 状态的迭代是并行运行的,可以实现快速处理数据集。

通过将 Map 状态包含在工作流中,您可以使用以下两种 Map 状态处理模式 之一来执行数据处理等任务:内联模式和分布式模式。要配置Map状态,您需要定义一个ItemProcessor,其中包含用于指定Map状态处理模式及其定义的JSON对象。您将在默认的 Inline 模式下运行该Map状态,该模式最多支持 40 次并发迭代。当您运行分布式模式下的 Map 状态时,它最多支持 10000 个并行子工作流执行。

当您的工作流程执行进入Map状态时,它将遍历状态输入中指定的JSON数组。对于每个数组项目,其相应的迭代在包含 Map 状态工作流的上下文中运行。当所有迭代完成后,Map 状态将返回一个数组,其中包含由 ItemProcessor 处理的每个项目的输出。

你将在内联模式下使用该Map州,通过遍历一组征信机构来获取申请人的信用评分。为此,您首先要获取存储在 Amazon DynamoDB 表中的所有征信机构的名称,然后使用 Map 状态循环访问征信机构列表,以获取每个征信机构报告的申请人的信用评分。

第 1 步:创建 DynamoDB 表来存储所有征信机构的名称

在本步骤中,您将使用 DynamoDB 控制台创建一个名为 GetCreditBureau 的表。该表使用字符串属性 Name 作为分区键。在此表中,您存储了希望从中获取申请人信用评分的所有征信机构的名称。

  1. 登录 AWS Management Console 并打开 DynamoDB 控制台,网址为。 https://console.aws.amazon.com/dynamodb/

  2. 在控制台的导航窗格中,选择,然后选择创建表

  3. 按以下所示输入表详细信息:

    1. 对于表名称,输入 GetCreditBureau

    2. 对于分区键,输入 Name

    3. 其他保留默认选择,然后选择创建表

  4. 创建表后,在表格列表中选择该GetCreditBureau表。

  5. 选择操作,然后选择创建项目

  6. 中,输入征信机构的名称。例如,CredTrack

  7. 选择创建项目

  8. 重复此过程,为其他征信机构的名称创建项目。例如,KapFinnCapTrust

第 2 步:更新状态机 – 从 DynamoDB 表中获取结果

在 Step Functions 控制台中,您将添加一个Task状态,然后使用AWS SDK集成从您在步骤 1 中创建的 DynamoDB 表中获取征信机构的名称。您将使用此步骤的输出作为稍后将在工作流程中添加的Map状态的输入。

  1. 打开CreditCardWorkflow状态机进行更新。

  2. 选择 Get list of credit bureaus 状态。

  3. 对于API参数,将表名值指定为GetCreditBureau

第 3 步:创建可返回所有征信机构信用评分的 Lambda 函数

在此步骤中,您将创建一个 Lambda 函数,用于接收所有征信机构的名称作为输入,并返回申请人在每个征信机构中的信用评分。此 Lambda 函数将从您将在工作流程中添加的Map状态调用。

  1. 创建一个 Node.js 16.x Lambda 函数,并将其命名 get-credit-score

  2. 在标题为的页面上 get-credit-score,将以下代码粘贴到代码源区域。

    function getScore(arr) { let temp; let i = Math.floor((Math.random() * arr.length)); temp = arr[i]; console.log(i); console.log(temp); return temp; } const arrScores = [700, 820, 640, 460, 726, 850, 694, 721, 556]; exports.handler = (event, context, callback) => { let creditScore = getScore(arrScores); callback(null, "Credit score pulled is: " + creditScore + "."); };
  3. 部署 Lambda 函数。

第 4 步:更新状态机 – 添加 Map 状态以迭代方式获取信用评分

在 Step Functions 控制台中,您可以添加一个Map州,该州调用 get-credit-scoreLambda 函数来检查 “获取征信机构列表” 州返回的所有征信机构的申请人的信用评分。

  1. 打开CreditCardWorkflow状态机进行更新。

  2. 选择 Get scores from all credit bureaus 状态。

  3. 配置选项卡中,选择提供项目数组的路径,然后输入 $.Items

  4. Map 状态中选择获取所有评分步骤。

  5. 配置选项卡中,确保在集成类型中选择了优化

  6. 函数名称中,开始键入 get-credit-scoreLambda 函数的名称,然后从出现的下拉列表中进行选择。

  7. 对于有效负载,选择无有效负载

后续步骤

在下一步中运行工作流 ,您将学习如何运行工作流程。