将QueryString参数从API网关传递到AWS Lambda c#

时间:2017-06-12 16:15:49

标签: amazon-web-services aws-lambda aws-sdk aws-api-gateway

我正在尝试使用API​​Gateway调用AWS Lambda并返回HTML代码。当我没有传递任何参数时它工作正常,但我想传递一些QueryString参数并在Lambda中使用它们。我在C#中拥有我的Lambda,我看到从API传递的参数

response from API "headers": {}, "QueryStringParameters": { "Environment": "xzc" }, "PathParameters": {} }

在Lambda中,APIGatewayProxyRequest将为null API Lambda public string FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context)

如何在C#

中读取AWS Lambda中的查询字符串参数

4 个答案:

答案 0 :(得分:1)

解释多于1个输入参数,有时这对开发人员来说也是一个问题:

步骤01 :这应该是你的C-Sharp方法

public string FunctionHandler(string strEnvironmentA, string strEnvironmentB, ILambdaContext context);

步骤02 :在API> GET方法执行>方法请求为

添加查询字符串参数
  • strEnvironmentA
  • strEnvironmentB

步骤03 :在API> GET方法执行>集成请求>正文映射模板添加此应用程序/ json模板

"$input.params('strEnvironmentA')" 
"$input.params('strEnvironmentB')" 

答案 1 :(得分:1)

看起来您只需要在API网关资源配置的集成请求中选中使用Lambda代理集成

您应该包括:

using Amazon.Lambda.APIGatewayEvents;

和您的处理程序函数标头应如下所示:

public APIGatewayProxyResponse FunctionHandler( APIGatewayProxyRequest input, ILambdaContext context)

然后您可以使用以下命令访问查询字符串参数:

input.QueryStringParameters

答案 2 :(得分:0)

做这样的事情:

public string FunctionHandler(string input, ILambdaContext context);

然后你可以在请求体中传递输入而不是查询字符串参数。

答案 3 :(得分:-1)

if (request.QueryStringParameters != null)
{
    queryStringParameters = request.QueryStringParameters;
    foreach (var item in queryStringParameters)
    {
        Console.WriteLine($"QueryStringParameter - " + item.Key + ":" + item.Value);
    }
}