1

我需要在我的 AWS Step Functions 状态中过滤一个数组。这似乎是我应该可以通过 JsonPath 轻松实现的目标,但由于某种原因我正在苦苦挣扎。

我要处理的状态如下所示:

{
  "items": [
    {
      "id": "A"
    },
    {
      "id": "B"
    },
    {
      "id": "C"
    }
  ]
}

id我想通过删除不在指定白名单中的条目来过滤这个数组。

为此,我Pass通过以下方式定义状态:

"ApplyFilter": {
  "Type": "Pass",
  "ResultPath": "$.items",
  "InputPath": "$.items.[?(@.id in ['A'])]",
  "Next": "MapDeployments"
}

这利用了JsonPathin运算符

不幸的是,当我执行状态机时,我收到一个错误:

{
  "error": "States.Runtime",
  "cause": "An error occurred while executing the state 'ApplyFilter' (entered at the event id #8). Invalid path '$.items.[?(@.id in ['A'])]' : com.jayway.jsonpath.InvalidPathException: com.jayway.jsonpath.InvalidPathException: Space not allowed in path"
}

但是,我不明白语法有什么问题。当我在这里测试时,一切正常。

我所做的有什么问题?是否有另一种使用 JsonPath 实现这种过滤器的方法?

4

1 回答 1

1

根据 Step Functions 的官方 AWS 文档,

不支持以下路径@ .. , : ? *

https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-paths.html

于 2021-02-16T05:52:48.827 回答