【问题标题】:Reading Event Parameters AWS lambda读取事件参数 AWS lambda
【发布时间】:2018-08-31 14:04:08
【问题描述】:

我有一个 lambda 函数(Node.js 4.3),如下所示:

exports.handler = function(event, context, callback) {
    console.log('Received event:', JSON.stringify(event, null, 2));
    var greeter = 'World';
    if (event.greeter && event.greeter!=="" && event.greeter1 && event.greeter1!=="") {
        console.log('Received 1');
        greeter =  event.greeter + event.greeter1 ;
    } else if (event.body && event.body !== "") {
         console.log('Received Body');
        var body = JSON.parse(event.body);
        if (body.greeter && body.greeter !== "") {
            greeter = body.greeter;
        }
    } else if (event.queryStringParameters && event.queryStringParameters.greeter && event.queryStringParameters.greeter !== "") {
        greeter = event.queryStringParameters.greeter;
    } else if (event.headers && event.headers.greeter && event.headers.greeter != "") {
        greeter = event.headers.greeter;
    }
    res.body = "Hello, " + greeter + "!";
    callback(null, res);
};

当我使用测试控制台测试该功能时,它工作正常,它给了我一个正确的输出,如下所示:

Response:
{
  "statusCode": 200,
  "headers": {
    "Content-Type": "*/*"
  },
  "body": "Hello, maximJane!"
}

但是,当我尝试使用我的 API 网关(API 网关中的 AWS Lambda 代理集成)对其进行测试时,它只考虑了一个基本上是“欢迎者”的论点。 'greeter1' 根本不被考虑。

我尝试了所有选项,但不知何故它只读取了 1 个参数。

【问题讨论】:

    标签: aws-lambda aws-api-gateway


    【解决方案1】:

    AWS Lambda 会代表您自动监控 Lambda 函数,并通过 Amazon CloudWatch 报告指标。您可以检查它(转到 lambda 函数上的监控选项卡,然后单击“在 CloudWatch 上查看”)。您将看到该事件仅具有 'greeter' 参数(console.log('Received event:', JSON.stringify(event, null, 2)); 也会打印到日志中)。

    发生这种情况是因为您尚未映射网关 API 上的每个参数。您可以在方法属性的“集成请求”/“映射模板”中执行此操作。

    在API Gateway Mapping Template Reference 文章的“访问 $input 变量”部分查看如何映射它。

    您的模板应该类似于下一个示例:

    {
        "greeter": "$input.params('greeter')",
        "greeter1": "$input.params('greeter1')",
        "Data": $input.json('$')
    }
    
    • $input.params - 从 param 映射数据
    • $input.json('$') - 从请求体映射数据(如果是post 或put)

    【讨论】:

    • 非常感谢。监控评论帮助我跟踪问题。
    猜你喜欢
    • 2021-02-07
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2020-01-17
    • 2020-07-27
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    相关资源
    最近更新 更多