如何将Querystring值从AWS API网关传递到Lambda C#函数



我有一个C#方法,我成功地以AWS lambda函数发布了该方法。看起来这样:

public class MyClass
{
    public async Task<APIGatewayProxyResponse> Test(APIGatewayProxyRequest request, ILambdaContext context)
    {
        return new APIGatewayProxyResponse
        {
            Body = "Body: " + request.Body
                   + Environment.NewLine
                   + "Querystring: " + (request.QueryStringParameters == null ? "null" : string.Join(",", request.QueryStringParameters.Keys)),
            StatusCode = 200
        };
    }
}

我已经完成了以下操作以通过Web接口配置API网关:

  1. 创建一个新的API
  2. 创建了一个带有名称" myclass"one_answers"路径"/myclass的新资源
  3. 使用" lambda函数"作为集成类型创建了一个新的获取方法,并指向我的lambda函数。

我希望能够像这样调用我的lambda函数(而无需传递请求中的任何指定标头):https://xxx.execute-api.us-east-2.amazonaws.com/prod/myclass?parama=valuea&Paramb; Paramb = valueb

我不确定如何使我的querystring参数传递到lambda函数。不管我尝试什么

此处的正确过程是什么?

您需要为请求配置URL查询字符串参数。

  1. 转到API Gateway

  2. 单击您的适当方法,即GET方法

  3. 转到方法执行

  4. 在方法执行中,选择URL查询字符串参数。

  5. 添加查询字符串参数,例如parama,paramb

  6. 现在转到Integration请求选项卡

  7. 选择车身映射模板,内容类型应用程序/json

  8. 生成类似于下面的模板

    {
     "paramA":  "$input.params('paramA')",
     "paramB":  "$input.params('paramB')"
    }
    
  9. 在lamda函数中接受该键值。

希望这会有所帮助。

好吧,我已经弄清楚了问题。

ApigatewayProxyRequest是从JSON传递给Lambda函数的对象。您可以看到正在传递给lambda函数的RAW JSON,如果您接受求职为第一个参数:

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

因此,为了填充ApigatewayProxyRequest,在身体映射模板中指定的JSON需要匹配ApigatewayProxyRequest的属性。这里有一个示例显示的示例(尽管它没有显示您需要的实际模板):https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gatewaywayway-simple-proxy.html#api-gateway-simple-proxy-for-lambda-input-format

但是,实际上并不需要使用ApigatewayProxyRequest。仅接受Jobject作为Lambda函数的第一个参数会更容易,然后您可以访问所需的任何JSON。然后,您可以使用像Vaibs答案中描述的技术一样。

请使用" $ input.params('yourqueryStringKey')。

您可以在API网关集成响应中创建车身映射模板,然后尝试" $ input.params('yourqueryStringKey")或直接在lambda函数中。

相关内容

  • 没有找到相关文章

最新更新