2016-06-07 2 views

ответ

1

Это, как правило, нахмуривается, поскольку он создает зависимость. Непосредственным вызовом других лямбда-функций является опция (Can an AWS Lambda function call another), однако точка лямбда для них выполняется изолированно. Это также может быть опасно, если вы получите рекурсивный лямбда-образец. Лучшим способом, как правило, является общение через SQS и SNS, если вам нужно быстрое время отклика.

2

Не вызывать функцию function_2 из функции_1.

Напишите две функции, позволяющие самостоятельно выполнять свои задачи.

Для управления потоком выполнения вы должны использовать шаговые функции AWS, которые позволяют вам координировать различные функции лямбда.

Если вы хотите сохранить информацию, используйте другую службу хранения (например, S3 или DynamoDB) для хранения информации, которую может использовать функция_2. Затем пусть функции Step направляют трафик. Но проверьте, существует ли эта служба в регионе, в котором вы развертываете свои функции.

Вот краткое руководство по AWS функций Шага:

http://docs.aws.amazon.com/step-functions/latest/dg/welcome.html

1

Это зависит от того, являетесь ли вы заинтересованы в возвращаемом значении function_2.

Если вам нужно получить возвращаемое значение function_2, вы должны вызвать его напрямую. У вас есть два варианта:

  1. вызова функции 2 лямбда синхронно. См. Lambda.invoke() из документов AWS-SDK.

  2. Если вы можете включить функцию 2 в свой пакет функций 1 (по умолчанию это serverless), вы можете просто импортировать его напрямую в зависимости от того, как написан ваш код.

Если функция 1 не нужно знать ответ или возвращаемое значение функции 2, вы должны использовать SNS назвать его асинхронно. Чтобы сделать это, вот один из предложенных способов:

  1. Создайте тему SNS.
  2. Настройте функцию 2, чтобы подписаться на указанную выше тему SNS. (Serverless Docs)
  3. Имейте функцию 1, опубликуйте сообщение в теме SNS на шаге 1.
Смежные вопросы