AWS Lambda: вызов функции при успешном завершении другого - PullRequest
1 голос
/ 27 июня 2019

У меня есть две лямбда-функции:

  • Func1
  • Func2

Func1 вызывается ежечасно по расписанию (определяется как Событие в template.yaml).

Мне нужно вызвать Func2 при успешном завершении Func1.

Как мне добиться этого, не вызывая Func2 внутри кода Func1? Есть ли способ в шаблоне CloudFormation, чтобы достичь этого? Использование событий может быть?

Ответы [ 2 ]

3 голосов
/ 27 июня 2019

Step Functions - это сервис, который вы хотите использовать: https://aws.amazon.com/step-functions/getting-started/

Это «официальный» способ связать вас лямбды, и я фактически внедрил такое решение, как 2 года назад.Вы можете настроить входные и выходные параметры каждого узла лямбда-цепочки.И, конечно, вы можете написать CF для предоставления конечного автомата SF.

Вам нужно изменить целевое правило правила Cloudwant с запуска одной лямбды на запуск конечного автомата SF.Но я считаю, что это не главное изменение.

У меня действительно был плохой опыт обслуживания автомата SF JSON в Cloudformation, но это могло бы быть улучшено и не так уж плохо, если бы в вашей цепочке было всего 2 лямбды,И теперь кажется, что пошаговые функции были гораздо более мощными, чем просто лямбда-цепочка.

0 голосов
/ 28 июня 2019

Если вы не хотите вызывать Func2 напрямую из Func1, вы можете:

  • Поместите уведомление в тему SNS в Func1, а затем подпишите Func2 на эту тему
  • Поместить сообщение в очередь SQS в Func1, а затем запустить Func2, используя эту очередь
  • Поместите уведомление в тему SNS в Func1, а затем подпишите очередь SQS на эту тему и запустите Func2 из этой очереди. Это называется шаблон разветвления и полезно для реализации параллельной обработки.
  • Наконец, используйте пошаговые функции, особенно если вы реализуете более сложный рабочий процесс, а не просто объединяете две функции вместе.
  • Вы даже можете запустить Func2 из журнала CloudWatch Func1
...