Шаговая функция AWS - добавление динамического значения в тип состояния Pass - PullRequest
0 голосов
/ 31 января 2019

В моем автомате состояний определено следующее состояние.

 "loop":{
      "Type": "Pass",
      "Result":{
        "totalCount": "$.newFieldsResponse.body.count",
        "currentCount": 0,
        "step": 1
      },
      "ResultPath": "$.iteration",
      "Next":"iterateLoop"
    },

Я ожидаю, что выход этого состояния будет:

"newFieldsResponse": {
      "isSuccess": true,
      "error": "",
      "body": {
        "count": 2,
        "fields": [...]
      }
    },
    "iteration": {
      "totalCount": 5,
      "currentCount": 0,
      "step": 1
    }
  }

свойство итерации добавляется к входу сСвойство totalCount, которое нужно установить для подсчета элементов в массиве полей.

Однако выход для свойства "iteration" устанавливается как:

"iteration": {
      "totalCount": "$.newFieldsResponse.body.count",
      "currentCount": 0,
      "step": 1
    }

Похоже на значение "$ .newFieldsResponse.body.count "не разрешается и выводится как есть.

Есть ли что-то, что я делаю неправильно?Может кто-нибудь подсказать, пожалуйста, как заставить это работать?

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

это возможно через "параметры" в состоянии передачи https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-pass-state.html

"loop": {"Type": "Pass", "paramaters": {"totalCount": "$ .newFieldsResponse.body.count "," currentCount ": 0," step ": 1}," ResultPath ":" $ .iteration "," Next ":" iterateLoop "},

0 голосов
/ 07 февраля 2019

Похоже, это невозможно.Обходной путь, который я сделал, состоит в использовании свойства «Параметры».Из документации AWS: «Для пар ключ-значение, в которых значение выбирается с использованием пути, имя ключа должно заканчиваться на *. $.».

Таким образом, решено выше с помощью:

  1. Изменение состояния прохода для удаления любой ссылки на динамическое значение
"loop":{
      "Type": "Pass",
      "Result":{
        "currentCount": 0,
        "step": 1
      },
      "ResultPath": "$.iteration",
      "Next":"iterateLoop"
    },
создание свойства Parameters, в котором мне нужны следующие значения:
 "iterateLoop":{
      "Type":"Task",
      "Resource": "arn:aws:lambda:....r",
      "Parameters":{
        "totalCount.$": "$.newFieldsResponse.body.count",
        "currentCount.$": "$.iteration.currentCount",
        "step.$": "$.iteration.step"
      },
      "ResultPath": "$.iteration",
      "Next":"continueLoop"
    },

totalCount, currentCount и пошаговое чтение всех значений с использованием пути во входных данных состояния.К ключу необходимо добавить ". $" В конце.

...