本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
数据流模拟器
您可以在 Step Functions 控制台
InputPath
-
选择将整个输入有效负载的哪个 部分用作任务的输入。如果您指定了此字段,Step Functions 将首先应用此字段。
参数
-
指定在调用任务之前输入的外观。使用
Parameters
字段,您可以创建一个键值对的集合,这些键值对作为输入传递给 Amazon Web Service集成(例如 Amazon Lambda 函数)。这些值可以是静态的,也可以从状态输入或工作流上下文对象中动态选择。 ResultSelector
-
确定从任务的输出中选择什么。使用
ResultSelector
字段,您可以创建一个键值对的集合,这些键值对用于替换状态的结果并将该集合传递给ResultPath
。 ResultPath
-
确定任务输出的放置位置。使用
ResultPath
来确定状态的输出是其输入的副本、其产生的结果还是两者的组合。 OutputPath
-
确定发送到下一个状态的内容。使用
OutputPath
,您可以筛选出不需要的信息,并且仅传递所需的 JSON 数据。
本主题内容
使用数据流模拟器
模拟器可在您应用输入和输出数据处理字段之前和之后,对您的数据进行实时、并排的比较。要使用模拟器,请指定一个 JSON 输入。然后,通过每个输入和输出处理字段对其进行评估。模拟器会自动验证您的 JSON 输入并突出显示所有语法错误。
使用数据流模拟器的操作步骤
在以下步骤中,您将提供 JSON 输入并应用 InputPath
和 参数
字段。您还可以应用其他可用字段并查看其输出。
-
在导航窗格中,选择数据流模拟器。
-
在状态输入区域中,将预先填充的示例 JSON 数据替换为以下 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" } } }
-
在 InputPath 中,输入
$.data.address
,选择输入 JSON 数据的地址节点。InputPath 之后的状态输入框将显示以下结果。
{ "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }
-
选择下一步。
-
应用
Parameters
字段将生成的 JSON 数据转换为字符串。要转换数据,请执行以下操作:-
在参数框中,输入以下代码,创建名为
addressString
的字符串。{ "addressString.$": "States.Format('{}. {}, {} - {}', $.street, $.city, $.state, $.zip)" }
-
-
在参数之后的已筛选输入框中查看
Parameters
字段应用的结果。
使用数据流模拟器的注意事项
在使用数据流模拟器之前,请考虑其局限性,包括但不限于:
-
不受支持的筛选表达式
模拟器中的筛选表达式的行为方式与 Step Functions 服务中的筛选表达式不同。这包括使用以下语法的表达式:
[?(expression)]
. 以下是不受支持的表达式列表。如果使用这些表达式,在评估后可能不会返回预期的结果。-
$..book[?(@.isInStock==true)]
-
$..book[?(@.price > 10.0)].title
-
-
单项数组的 JsonPath 评估不正确
如果您使用返回单个数组项的 JsonPath 表达式筛选数据,则模拟器会返回不带数组的项目。例如,考虑以下数据数组,名为
items
:{ "items": [ { "name": "shoe", "color": "blue", "comment": "nice shoe" }, { "name": "hat", "color": "red" }, { "name": "shirt", "color": "yellow" } ] }
给定这个
items
数组,如果您在 InputPath 字段中输入$..comment
,您会得到以下输出:[ "nice shoe" ]
但是,数据流模拟器会返回以下输出:
"nice shoe"
对于包含多个项目的数组的 JSONPath 评估,模拟器会返回预期输出。