使用 InputPath 过滤器选择原始输入的特定部分 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 InputPath 过滤器选择原始输入的特定部分

使用 InputPath 筛选条件,选择输入有效负载的特定部分。

如果您未指定 InputPath,则其值默认为 $,这会导致状态的任务将引用整个原始输入而不是特定部分。

第 1 步:创建状态机

重要

确保您的状态机与您之前创建的 Lambda 函数位于相同的 Amazon 账户和区域下。

  1. 使用您在教程 4 中学到的 Parallel 状态示例来创建新的状态机。确保工作流原型类似于以下原型。

  2. check-identitycheck-address Lambda 函数配置集成。有关创建 Lambda 函数并在状态机中使用函数的信息,请参阅第 1 步:创建 Lambda 函数执行所需的检查第 2 步:更新工作流 – 添加要执行的并行任务

  3. 对于有效负载,请确保保留使用状态输入作为有效负载的默认选择。

  4. 选择下一步,然后执行教程 5 第 1 步:保存状态机中的第 1 至 3 步,来创建新的zhuang't状态机。在本教程中,请将状态机命名为 WorkflowInputOutput

第 2 步:运行状态机

  1. WorkflowInputOutput页面上,选择开始执行

  2. (可选)要识别您的执行,您可以在名称框中为其指定一个名称。默认情况下,Step Functions 会自动生成一个唯一的执行名称。

    注意

    Step Functions 允许您为状态机、执行、活动和包含非 ASCII 字符的标签创建名称。这些非 ASCII 名称不适用于亚马逊。 CloudWatch为确保您可以跟踪 CloudWatch 指标,请选择仅使用 ASCII 字符的名称。

  3. 输入区域中,添加以下 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" } } }
  4. 选择启动执行

  5. 状态机执行出现错误,这是因为您尚未指定 check-identitycheck-address Lambda 函数必须使用执行输入的哪一部分来执行所需的身份和地址验证。

  6. 继续执行本教程的第 3 步,以便修复错误。

第 3 步:使用 InputPath 筛选条件选择执行输入的特定部分

  1. 执行详细信息页面上,选择编辑状态机

  2. 要验证第 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" }
  3. 要验证执行输入中提及的申请人地址,请按如下方式编辑 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" }
  4. 选择启动执行。状态机执行现在成功完成。