如何使用 JSONPath 创建供 AWS Step Functions 使用的 JSON 对象?
How can I use JSONPath to create a JSON object for use by AWS Step Functions?
使用 AWS 步进函数,我试图 select 仅从任务结果中获取某些数据。出于某些深不可测的原因,AWS 选择不允许在步骤函数中使用 Query
,所以我使用 ResultsSelector
。但是,我正在努力寻找所需的 JSON 路径。
如何使用 ResultsSelector
构建我想要的 JSON 对象?
取这个结果-
{
"IsTruncated": false,
"KeyMarker": "",
"MaxKeys": 1000,
"Name": "some-bucket-name",
"Prefix": "some/prefix/",
"VersionIdMarker": "",
"Versions": [
{
"ETag": "\"02e9c20b7cd36fcf6e47926c26f0b39e\"",
"IsLatest": true,
"Key": "some/prefix/my.file",
"LastModified": "2021-09-30T15:34:59Z",
"Owner": {
"Id": "1fd170056d1480a7c1c9b43f5bf0603d91cbabc4ec77eefdcaa10218c3a920f6"
},
"Size": 69606,
"StorageClass": "STANDARD",
"VersionId": "y6XzRsCUZcXMPHqwwnhAGLwTlmPoj9dj"
},
{
"ETag": "\"01bc5b65afe6b0cc0722fc5da32a8a44\"",
"IsLatest": false,
"Key": "some/prefix/my.file",
"LastModified": "2021-09-30T15:34:21Z",
"Owner": {
"Id": "1fd170056d1480a7c1c9b43f5bf0603d91cbabc4ec77eefdcaa10218c3a920f6"
},
"Size": 69407,
"StorageClass": "STANDARD",
"VersionId": "jPdKeUqnYlf0_eNXzHaYCvDfdHLOvRX7"
}
]
}
我想要的是使用 ResultsSelector
构造这个 JSON 对象 -
{
"Objects": [
{
"Key": "some/prefix/my.file",
"VersionId": "y6XzRsCUZcXMPHqwwnhAGLwTlmPoj9dj"
},
{
"Key": "some/prefix/my.file",
"VersionId": "jPdKeUqnYlf0_eNXzHaYCvDfdHLOvRX7"
}
]
}
然而,到目前为止我能得到的最接近的是使用这个 -
{
"Key.$": "$.Versions[*].Key",
"VersionId.$": "$.Versions[*].VersionId"
}
这让我明白了 -
{
"VersionId": [
"y6XzRsCUZcXMPHqwwnhAGLwTlmPoj9dj",
"jPdKeUqnYlf0_eNXzHaYCvDfdHLOvRX7",
],
"Key": [
"some/prefix/my.file",
"some/prefix/my.file"
]
}
Jayway JsonPath
实现给出了带有 Key 的输出。您需要验证 AWS Step 函数是否支持以下 jsonpath
.
工具:https://jsonpath.herokuapp.com/
$.Versions[*].['Key','VersionId']
如果它有效,那么你可以做类似的事情
"Objects.$": "$.Versions[*].['Key','VersionId']",
使用 AWS 步进函数,我试图 select 仅从任务结果中获取某些数据。出于某些深不可测的原因,AWS 选择不允许在步骤函数中使用 Query
,所以我使用 ResultsSelector
。但是,我正在努力寻找所需的 JSON 路径。
如何使用 ResultsSelector
构建我想要的 JSON 对象?
取这个结果-
{
"IsTruncated": false,
"KeyMarker": "",
"MaxKeys": 1000,
"Name": "some-bucket-name",
"Prefix": "some/prefix/",
"VersionIdMarker": "",
"Versions": [
{
"ETag": "\"02e9c20b7cd36fcf6e47926c26f0b39e\"",
"IsLatest": true,
"Key": "some/prefix/my.file",
"LastModified": "2021-09-30T15:34:59Z",
"Owner": {
"Id": "1fd170056d1480a7c1c9b43f5bf0603d91cbabc4ec77eefdcaa10218c3a920f6"
},
"Size": 69606,
"StorageClass": "STANDARD",
"VersionId": "y6XzRsCUZcXMPHqwwnhAGLwTlmPoj9dj"
},
{
"ETag": "\"01bc5b65afe6b0cc0722fc5da32a8a44\"",
"IsLatest": false,
"Key": "some/prefix/my.file",
"LastModified": "2021-09-30T15:34:21Z",
"Owner": {
"Id": "1fd170056d1480a7c1c9b43f5bf0603d91cbabc4ec77eefdcaa10218c3a920f6"
},
"Size": 69407,
"StorageClass": "STANDARD",
"VersionId": "jPdKeUqnYlf0_eNXzHaYCvDfdHLOvRX7"
}
]
}
我想要的是使用 ResultsSelector
构造这个 JSON 对象 -
{
"Objects": [
{
"Key": "some/prefix/my.file",
"VersionId": "y6XzRsCUZcXMPHqwwnhAGLwTlmPoj9dj"
},
{
"Key": "some/prefix/my.file",
"VersionId": "jPdKeUqnYlf0_eNXzHaYCvDfdHLOvRX7"
}
]
}
然而,到目前为止我能得到的最接近的是使用这个 -
{
"Key.$": "$.Versions[*].Key",
"VersionId.$": "$.Versions[*].VersionId"
}
这让我明白了 -
{
"VersionId": [
"y6XzRsCUZcXMPHqwwnhAGLwTlmPoj9dj",
"jPdKeUqnYlf0_eNXzHaYCvDfdHLOvRX7",
],
"Key": [
"some/prefix/my.file",
"some/prefix/my.file"
]
}
Jayway JsonPath
实现给出了带有 Key 的输出。您需要验证 AWS Step 函数是否支持以下 jsonpath
.
工具:https://jsonpath.herokuapp.com/
$.Versions[*].['Key','VersionId']
如果它有效,那么你可以做类似的事情
"Objects.$": "$.Versions[*].['Key','VersionId']",