多种方式调用AWS Lambda

时间:2019-03-27 16:28:03

标签: c# aws-lambda aws-api-gateway

我正在跟踪一个演示,并已创建了通过AWSSDK调用的C#Lambda。函数处理程序如下所示:

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

这很好用。现在,我想看看是否可以使用API​​ Gateway调用它。我知道为了使它起作用,我需要在函数签名中添加APIGatewayProxyRequest。我可以将其添加为参数,还是必须替换变量'fileName'?

当我想同时调用函数时,该如何工作?直接通过SDK还是通过APIGateway?我可以使用一种可以通过多种方式调用的功能吗?

1 个答案:

答案 0 :(得分:2)

Lambda不支持函数重载,而仅支持特定的函数调用。此外,main方法希望在第一个参数中接收内容,因此在您的示例中为APIGatewayProxyRequestfilename。如果Lambda函数是由S3调用的,则它可以是其他对象,基于触发器的来源,例如S3Event

您可以定义一个通用方法签名,例如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);

通过这种方式,您可以对几种触发器类型使用相同的方法。