How to pass a querystring value from AWS API Gateway to a Lambda C# function

与世无争的帅哥 提交于 2019-12-01 12:19:31

You need to configure the url query string parameter for your request.

  1. go to API gateway

  2. click on your appropriate method i.e. GET method

  3. go to Method Execution

  4. In method execution , select URL Query String Parameter.

  5. Add query String parameter like paramA, paramB

  6. Now go to Integration Request Tab

  7. Choose Body Mapping Template, content type application/json

  8. Generate Template like below

    {
     "paramA":  "$input.params('paramA')",
     "paramB":  "$input.params('paramB')"
    }
    
  9. Accept this key value in pair in lamda function.

hope this will be helpful.

Ok I've figured out the problem.

The APIGatewayProxyRequest is an object deserialized from the JSON passed to the Lambda function. You can see the raw JSON that is being passed to the Lambda function if you accept a JObject as the first parameter instead:

public async Task<APIGatewayProxyResponse> Test(JObject request, ILambdaContext context)
{
    return new APIGatewayProxyResponse
    {
        Body = request.ToString(),
        StatusCode = 200
    };
}

So in order to fill APIGatewayProxyRequest, the JSON specified in the Body Mapping Template needs to match the properties of APIGatewayProxyRequest. There is an example shown here of the schema (although it doesn't show the actual template that you would need): https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html#api-gateway-simple-proxy-for-lambda-input-format

However, using APIGatewayProxyRequest is is not actually necessary. It is easier to just accept JObject as the first parameter of the Lambda function, and you then have access to whatever JSON you need. You can then use a technique like the one described in Vaibs' answer.

Please use "$input.params('YourQueryStringKey')".

Either you can create a body mapping template in API gateway integration response and try "$input.params('YourQueryStringKey')" or directly inside Lambda function.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!