Вызов AWS Lambda несколькими способами - PullRequest
0 голосов
/ 27 марта 2019

Я слежу за демонстрацией и создал лямбду на C #, которая вызывается через AWSSDK.Обработчик функций выглядит следующим образом:

  public async Task<bool> FunctionHandler(string fileName, ILambdaContext context)        

Это работает просто отлично.Теперь я хочу посмотреть, смогу ли я позвонить через API GatewayЯ понимаю, что для того, чтобы это работало, мне нужно добавить APIGatewayProxyRequest к сигнатуре функции.Могу ли я добавить это в качестве параметра или мне нужно заменить переменную fileName?

Как это работает, когда я хочу, чтобы функция вызывалась в обоих направлениях?Прямо через SDK или через APIGateway?Могу ли я иметь одну функцию, которая вызывается несколькими способами?

1 Ответ

2 голосов
/ 28 марта 2019

Lambda не поддерживает перегрузку функций, а только вызов определенной функции. Кроме того, метод main ожидает получения содержимого в первом аргументе, поэтому в вашем примере это либо APIGatewayProxyRequest, либо filename. Это может быть другой объект, основанный на источнике триггера, например S3Event, если функция Lambda была вызвана S3.

Вы можете определить общую сигнатуру метода, например FunctionHandler(Stream inputStream, ILambdaContext context), которая анализирует аргумент inputStream для APIGatewayProxyRequest объекта.
Например:

Amazon.Lambda.Serialization.Json.JsonSerializer jsonSerializer =
new Amazon.Lambda.Serialization.Json.JsonSerializer();

APIGatewayProxyRequest request = 
jsonSerializer.Deserialize<APIGatewayProxyRequest>(inputStream);

Таким образом, вы сможете использовать один и тот же метод для нескольких типов триггеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...