Как передать другой вывод из состояния выбора в AWS Step Function? - PullRequest
0 голосов
/ 14 декабря 2018

Пусть, скажем, часть моей функции шага выглядит следующим образом:

"ChoiceStateX": {
  "Type": "Choice",
  "Choices": [
    {
      "Variable": "$.value",
      "NumericEquals": 0,
      "Next": "ValueIsZero"
    }
  ],
  "Default": "DefaultState"
},
"ValueIsZero": {
  "Type" : "Task",
  "Resource": "arn:aws:lambda:******:function:Zero",
  "Next": "NextState"
},
"DefaultState": {
  "Type" : "Task",
  "Resource": "arn:aws:lambda:******:function:NotZero",
  "Next": "NextState"
}

Предположим, что вход в это состояние:

{
   "value": 0,
   "output1": object1,
   "output2": object2,
}

Моя проблема в том, что я должен пройти *От 1007 * до ValueIsZero и от output2 до DefaultState.Я знаю, что можно изменить InputPath в ValueIsZero и DefaultState состояниях.Но этот способ для меня неприемлем, потому что я вызываю эти состояния также из некоторых других состояний.

Я пытался изменить состояние ChoiceStateX следующим образом:

"ChoiceStateX": {
  "Type": "Choice",
  "Choices": [
    {
      "Variable": "$.value",
      "NumericEquals": 0,
      "OutputPath": "$.output1",
      "Next": "ValueIsZero"
    }
  ],
  "Default": "DefaultState"
}

Я получил следующееошибка в этом случае: Поле OutputPath не поддерживается .

Как можно реализовать эту функцию?

PS: В текущий моментЯ использую «прокси» состояния между ChoiceStateX и ValueIsZero / DefaultState, где изменяется вывод.

Я проверил:

, но решение еще не найдено.

1 Ответ

0 голосов
/ 19 декабря 2018

Похоже, невозможно указать разные OutputPath для одного состояния.

Решение с прокси-состояниями не выглядит изящным.

Я решил эту проблему вдругой способ в состоянии до ChoiceStateX.Я устанавливаю экземпляры разных типов в свойстве output и направляю его только в состояние ChoiceStateX.

Мой ввод состояния ChoiceStateX выглядит следующим образом:

{
   "value": value,
   "output": value==0 ? object1 : object2
}

Конец окончательной версииChoiceStateX состояние:

"ChoiceStateX": {
  "Type": "Choice",
  "Choices": [
    {
      "Variable": "$.value",
      "NumericEquals": 0,
      "Next": "ValueIsZero"
    }
  ],
  "OutputPath": "$.output",
  "Default": "DefaultState"
}

Это все еще не идеально, потому что я реализую ту же логику в двух местах.

...