Передача данных через l oop in AWS Шаг Функции - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть AWS Шаговая функция, которая состоит из "Map" (зацикливание массива на входе), а затем ряда задач, выполняемых последовательно со всеми результатами. Однако на последнем шаге я бы также хотел бы иметь возможность получить доступ к некоторым исходным входным данным, которые не использовались на промежуточных этапах. Как мне лучше всего это сделать?

Что я пробовал до сих пор:

  • Передача всех входных данных через задачи карты. Однако это быстро заканчивается неудачей, поскольку существует ограничение на то, как большие результаты могут передаваться между функциями, и с сотнями итераций исходный ввод умножается в сотни раз.

  • Использование Parallel состояние и добавьте пустое состояние в одну ветвь параллельного выполнения, которая просто передает ввод, в то время как вся итерация происходит в другой. Это похоже на хак, потому что моя структура шагов теперь плохо отражает реальную логику c кода.

Каков был бы «правильный» способ сделать это?

                     Iterate
                     over Fiz
                     +--------+   +-------------+    +------------+
{                    | +---+  |   |             |    |            |
  Foo: "Bar", --> -------+ |  +---+      Y      +----+     Z      |
  Fiz: [...],        | +-+ |      |             |    |            |
}                    +-----+      +-------------+    +------------+

В поле Z выше я хочу иметь доступ как к «Foo», так и к выходу Y

1 Ответ

0 голосов
/ 06 февраля 2020

Оказывается, что каждый шаг в SFN имеет доступ к исходному вводу, но вы должны явно указать, вставьте их, используя Parameters. Все входные данные доступны в $$.Execution.Input.

. При использовании Parameters вы переопределяете все другие входные данные, поэтому вам также придется определить, что вы хотите передать из предыдущий шаг. Другими словами: если Y передает {fruit: "apple"} в Z, и вы хотите, чтобы Z видел и это, и исходный ввод {Foo: "Bar"}, вы должны добавить следующее к шагу Z в SFN:

{
    "Parameters": {
        "Foo.$": "$$.Execution.Input.Foo",
        "fruit.$": "$.apple"
}

Обратите внимание на двойной $$ в первом случае и один $ во втором.

...