本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用路径访问 Step Functions 工作流程的输入
在 Amazon States 语言中,路径是一个以开头的字符串$
,你可以用它来识别JSON文本中的组成部分。路径遵循JsonPathInputPath
、ResultPath
和 OutputPath
的值时,可以指定访问输入子集的路径。有关更多信息,请参阅在 Step Functions 中处理输入和输出。
注意
您还可以使用状态定义Parameters
字段内的路径来指定输入或上下文对象的JSON节点。请参阅 在 Step Functions API 中向服务传递参数。
如果您的字段名包含JsonPath ABNFmember-name-shorthand
定义中未包含的任何字符,则必须使用方括号表示法。因此,要对标点符号(不包括_
)等特殊字符进行编码,必须使用方括号表示法。例如,$.abc.['def ghi']
。
引用路径
引用路径是指其语法有限的路径,它只能识别JSON结构中的单个节点:
-
您可以使用句点 (
.
) 和方括号 ([ ]
) 表示法访问对象字段。 -
不支持像
length()
这样的函数。 -
不支持非符号的词法运算符,例如
subsetof
。 -
不支持通过正则表达式或在JSON结构中引用其他值进行筛选。
-
不支持运算符
@
,
:
、、和?
例如,如果状态输入数据包含以下值:
{
"foo": 123,
"bar": ["a", "b", "c"],
"car": {
"cdr": true
}
}
以下引用路径将返回以下内容。
$.foo => 123
$.bar => ["a", "b", "c"]
$.car.cdr => true
某些状态使用路径和引用路径来控制状态机的流,或者配置状态的设置或选项。有关更多信息,请参阅使用数据流模拟器对工作流输入和输出路径处理
展平由数组组成的数组
如果状态机中的 并行工作流状态 或 映射工作流程状态 状态返回由数组组成的数组,则可以使用 ResultSelector 字段将他们转换为一个平面数组。您可以将此字段包含在 Parallel 或 Map 状态定义中,以操纵这些状态的结果。
要扁平化数组,请使用ResultSelector
字段[*]
中的JMESPath语法
"ResultSelector": { "flattenArray.$": "$[*][*]" }
有关演示如何展平数组的示例,请参阅以下教程中的第 3 步: