本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 ResultSelector、ResultPath 和 OutputPath 筛选条件配置输出
在 WorkflowInputOutput 状态机中调用 check-address
Lambda 函数时,该函数将在执行地址验证后返回输出有效负载。在执行详细信息页面上,选择验证地址步骤,然后在步骤详细信息窗格的任务结果中查看输出有效负载。
{ "ExecutedVersion": "$LATEST", "Payload": { "statusCode": 200, "body": "{\"approved\":true,\"message\":\"identity validation passed\"}" }, "SdkHttpMetadata": { "AllHttpHeaders": { "X-Amz-Executed-Version": [ "$LATEST" ], ... ... "StatusCode": 200 }
使用 ResultSelector
现在,如果您需要向工作流中的以下状态提供身份和地址验证结果,则可以在输出 JSON 中选择 Payload.body 节点,然后使用 ResultSelector
筛选条件中的 StringToJson
内置函数根据需要格式化数据。
ResultSelector
从任务输出中选择所需的内容。在以下示例中,ResultSelector
获取 $.Payload.body 中的字符串,并应用 States.StringToJson
内置函数将该字符串转换为 JSON,并将生成的 JSON 放入身份节点中。
"ResultSelector": { "identity.$": "States.StringToJson($.Payload.body)" }
结果会创建以下 JSON 数据。
{ "identity": { "approved": true, "message": "Identity validation passed" } }
在使用这些输入和输出筛选条件时,您还可能会遇到因指定了无效的 JSON 路径表达式而导致的运行时错误。有关更多信息,请参阅。
使用 ResultPath
您可以使用 ResultPath
字段在初始输入有效负载中指定一个位置,来保存状态的任务处理结果。如果您未指定 ResultPath
,则采用默认值 $
,这会导致初始输入有效负载被原始任务结果替换。如果指定 ResultPath
为 null
,则原始结果将被丢弃,初始输入有效负载将成为有效输出。
如果您对使用 ResultSelector
字段创建的 JSON 数据应用 ResultPath
字段,任务结果将添加到输入有效负载的结果节点内,如以下示例所示:
{
"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"
},
"results": {
"identity": {
"approved": true
}
}
}
使用 OutputPath
在应用 ResultPath
之后,您可以选择状态输出的一部分以传递到下一个状态。这可让您筛选出不需要的信息,并且仅传递所需的 JSON 部分。
在以下示例中,OutputPath
字段将状态输出保存在结果节点内:"OutputPath": "$.results"
。因此,该状态的最终输出可以传递到下一个状态,如下所示:
{
"addressResult": {
"approved": true,
"message": "address validation passed"
},
"identityResult": {
"approved": true,
"message": "identity validation passed"
}
}
使用控制台特征可视化输入和输出数据流
您可以使用 Step Functions 控制台的数据流模拟器