【问题标题】:Pass query string parameters from WSO2 api gateway to AWS lambda将查询字符串参数从 WSO2 api 网关传递到 AWS lambda
【发布时间】:2022-01-05 14:22:06
【问题描述】:

我需要传递调用 WSO2 api 网关的查询字符串参数,该网关调用 AWS lambda 函数。

我在 AWS 的 NodeJS 中创建了以下 lambda 函数:

  exports.handler = async (event, context) => {
    return {
        statusCode: 200,
        body: JSON.stringify({
            incoming:JSON.parse(event), 
            date: new Date(), 
            context: JSON.parse(context)
            
        }),
    };
};

然后我:

  • 在 wso2 发布者门户中创建了一个新 API
  • 添加了 lambda 类型的端点
  • GET 配置了资源getTest
  • GET资源添加了查询参数parameter

当我在这里调用我的 API 时,结果如下:

curl -X GET "https://localhost:8243/lambda/1/getTest?parameter=myValue" -H "accept: */*" -H "Authorization: Basic YWRtaW46YWRtaW4="

{
    "statusCode":200,
    "body":"{\"incoming\":{},\"date\":\"2021-06-22T08:09:36.027Z\",\"context\":{\"callbackWaitsForEmptyEventLoop\":true,\"functionVersion\":\"$LATEST\",\"functionName\":\"wso2get\",\"memoryLimitInMB\":\"128\",\"logGroupName\":\"/aws/lambda/wso2get\",\"logStreamName\":\"2021/06/22/[$LATEST]90a7f95746c644a7a5cc61ec8648228e\",\"invokedFunctionArn\":\"arn:aws:lambda:eu-west-1:659641230079:function:wso2get\",\"awsRequestId\":\"4e271442-6209-47d9-ab0c-277c6535b8bd\"}}"
}

如何在 lambda 函数中检索值为 myValueparameter

【问题讨论】:

    标签: aws-lambda wso2 wso2-am


    【解决方案1】:

    您必须使用这两种参数定义您的 OpenAPI 定义:

    • 路径参数
    • 查询参数

    我将使用 wso2apim 2.6.0 和 OpenAPI 2.0 定义...

    转到 /publisher 并使用“设计新的 REST API”“添加新的 API”

    添加名称、竞赛(例如 /mylambda)等等。 在“API 定义”中包含一个 URL 模式,例如 "/{id}/getTest" 并检查 de GET 方法。自动添加一个名为“id”的“路径参数”。

    然后添加一个名为“参数”的新参数

    保存并在实现中,设置“端点”,将 URL 设置为:

    “https://localhost:8243/lambda”

    仅此而已。

    【讨论】:

    • 嗨@falconmfm,问题是我在 lambda 函数中没有收到该值。
    • 在 api manager 中配置正确的日志以检查请求和响应,转到 Configure(左侧)-> logging,并在所有包含“wire”的记录器中启用调试模式:@ 987654325@ 并查看 wso2carbon.log @da
    【解决方案2】:

    这已在最新包中修复。您可以将路径/查询/标头参数、http 方法和路径与负载一起发送到 Lambda。确保在资源创建时定义参数名称,如 [1] 中的 8.b.iii。以下是 Lambda 接收到的事件对象的格式。

    {
        "headers": {},
        "pathParameters": {},
        "queryStringParameters": {},
        "body": {},
        "httpMethod": "",
        "path": ""
    }
    

    请注意,要启用早期版本的参数映射,您必须将以下配置放入 deployment.toml 文件。

    [apim.lambda_mediator_config]
    pass_request_params = true
    

    [1]https://apim.docs.wso2.com/en/latest/design/create-api/create-rest-api/create-a-rest-api/

    【讨论】:

      猜你喜欢
      • 2017-11-14
      • 2019-11-27
      • 2015-09-28
      • 2018-04-18
      • 2023-04-02
      • 2020-09-23
      • 2020-11-05
      • 2016-11-18
      • 2021-01-13
      相关资源
      最近更新 更多