本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
同时迭代 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 作为分区键。在此表中,您存储了希望从中获取申请人信用评分的所有征信机构的名称。
登录 AWS Management Console 并打开 DynamoDB 控制台,网址为。 https://console.aws.amazon.com/dynamodb/
在控制台的导航窗格中,选择表,然后选择创建表。
按以下所示输入表详细信息:
对于表名称,输入
GetCreditBureau
。对于分区键,输入
Name
。其他保留默认选择,然后选择创建表。
创建表后,在表格列表中选择该GetCreditBureau表。
选择操作,然后选择创建项目。
在值中,输入征信机构的名称。例如,
CredTrack
。选择创建项目。
重复此过程,为其他征信机构的名称创建项目。例如,
KapFinn
和CapTrust
。
第 2 步:更新状态机 – 从 DynamoDB 表中获取结果
在 Step Functions 控制台中,您将添加一个Task状态,然后使用AWS SDK集成从您在步骤 1 中创建的 DynamoDB 表中获取征信机构的名称。您将使用此步骤的输出作为稍后将在工作流程中添加的Map
状态的输入。
打开CreditCardWorkflow状态机进行更新。
选择 Get list of credit bureaus 状态。
对于API参数,将表名值指定为
GetCreditBureau
。
第 3 步:创建可返回所有征信机构信用评分的 Lambda 函数
在此步骤中,您将创建一个 Lambda 函数,用于接收所有征信机构的名称作为输入,并返回申请人在每个征信机构中的信用评分。此 Lambda 函数将从您将在工作流程中添加的Map
状态调用。
创建一个 Node.js 16.x Lambda 函数,并将其命名
get-credit-score
。在标题为的页面上 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 + "."); };
部署 Lambda 函数。
第 4 步:更新状态机 – 添加 Map 状态以迭代方式获取信用评分
在 Step Functions 控制台中,您可以添加一个Map
州,该州调用 get-credit-scoreLambda 函数来检查 “获取征信机构列表” 州返回的所有征信机构的申请人的信用评分。
打开CreditCardWorkflow状态机进行更新。
选择 Get scores from all credit bureaus 状态。
在配置选项卡中,选择提供项目数组的路径,然后输入
$.Items
。在
Map
状态中选择获取所有评分步骤。在配置选项卡中,确保在集成类型中选择了优化。
在函数名称中,开始键入 get-credit-scoreLambda 函数的名称,然后从出现的下拉列表中进行选择。
对于有效负载,选择无有效负载。
后续步骤
在下一步中运行工作流 ,您将学习如何运行工作流程。