本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 InputPath 过滤器选择原始输入的特定部分
使用 InputPath
筛选条件,选择输入有效负载的特定部分。
如果您未指定 InputPath
,则其值默认为 $
,这会导致状态的任务将引用整个原始输入而不是特定部分。
要学习如何使用 InputPath 筛选条件,请执行以下步骤:
第 1 步:创建状态机
重要
确保您的状态机与您之前创建的 Lambda 函数位于相同的 Amazon 账户和区域下。
-
使用您在教程 4 中学到的
Parallel
状态示例来创建新的状态机。确保工作流原型类似于以下原型。 -
为
check-identity
和check-address
Lambda 函数配置集成。有关创建 Lambda 函数并在状态机中使用函数的信息,请参阅第 1 步:创建 Lambda 函数执行所需的检查和第 2 步:更新工作流 – 添加要执行的并行任务。 -
对于有效负载,请确保保留使用状态输入作为有效负载的默认选择。
-
选择下一步,然后执行教程 5 第 1 步:保存状态机中的第 1 至 3 步,来创建新的zhuang't状态机。在本教程中,请将状态机命名为
WorkflowInputOutput
。
第 2 步:运行状态机
-
在WorkflowInputOutput页面上,选择开始执行。
-
(可选)要识别您的执行,您可以在名称框中为其指定一个名称。默认情况下,Step Functions 会自动生成一个唯一的执行名称。
注意
Step Functions 允许您为状态机、执行、活动和包含非 ASCII 字符的标签创建名称。这些非 ASCII 名称不适用于亚马逊。 CloudWatch为确保您可以跟踪 CloudWatch 指标,请选择仅使用 ASCII 字符的名称。
-
在输入区域中,添加以下 JSON 数据作为执行输入。
{ "data": { "firstname": "Jane", "lastname": "Doe", "identity": { "email": "jdoe@example.com", "ssn": "123-45-6789" }, "address": { "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" } } }
-
选择启动执行。
-
状态机执行出现错误,这是因为您尚未指定
check-identity
和check-address
Lambda 函数必须使用执行输入的哪一部分来执行所需的身份和地址验证。 -
继续执行本教程的第 3 步,以便修复错误。
第 3 步:使用 InputPath
筛选条件选择执行输入的特定部分
-
在执行详细信息页面上,选择编辑状态机。
-
要验证第 2 步:运行状态机中提供的执行输入中提及的申请人身份,请按如下方式编辑 Verify identity 任务定义:
... { "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "InputPath": "$.data.identity", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:check-identity:$LATEST" }, "End": true } } } ...
因此,以下 JSON 数据可用作
check-identity
函数的输入。{ "email": "jdoe@example.com", "ssn": "123-45-6789" }
-
要验证执行输入中提及的申请人地址,请按如下方式编辑
Verify address
任务定义:... { "StartAt": "Verify address", "States": { "Verify address": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "InputPath": "$.data.address", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:check-address:$LATEST" }, "End": true } } } ...
因此,以下 JSON 数据可用作
check-address
函数的输入。{ "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }
-
选择启动执行。状态机执行现在成功完成。