Пошаговая функция AWS: использование вложенной переменной внутри условия

#serverless-framework #serverless #aws-step-functions

#бессерверный фреймворк #бессерверная #aws-step-функции

Вопрос:

Я пытаюсь написать пошаговую функцию, в которой каждая функция.

Допустим, это вывод одной из функций

 { 
    ...
    "foo": {
      "1": "one"
      "2": "two", 
      "5": "five"
     },
    "current": 2
    ...
}
 

У меня есть оператор выбора, который должен проверить, каково значение test_key , и разыменовать его в foo словаре.

 ...
"ChoiceState": {
      "Type" : "Choice",
      "Choices": [
        {
          "Variable": "$.foo['$.current']",  <--- This is unsupported
          "StringEquals": "two",
          "Next": "TwoFunction"
        }, 
        {
          "Variable": "$.foo['$.current']",  <--- This is unsupported
          "StringEquals": "three",
          "Next": "ThreeFunction"
        }
        ...
      ],
      "Default": "DefaultFunction"
    }
...
 

Как мне использовать динамическую ссылку в состояниях выбора?

Ответ №1:

JSONPath не поддерживает динамические ключи, поэтому это невозможно. Вам необходимо реструктурировать входные данные или объединить правила множественного выбора с оператором And сравнения, чтобы проверить соответствующее свойство на основе current :

 {
  "And": [
    {
      "Variable": "$.current",
      "StringEquals": "2"
    },
    {
      "Variable": "$.foo.2",
      "StringEquals": "two"
    }
  ],
  "Next": "TwoFunction"
}