读取事件参数AWS lambda [英] Reading Event Parameters AWS lambda

查看:191
本文介绍了读取事件参数AWS lambda的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a lambda function (Node.js 4.3) as below:

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);
};

当我使用测试控制台测试该功能时,它运行良好,并且给出了如下正确的输出:

It is working fine when I test the function using test console and it gives me a proper output as below:

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

但是,当我尝试使用我的API网关(API网关中的AWS Lambda代理集成)对其进行测试时,它只是认为一个论点基本上是问候".根本不考虑"greeter1".

However, when I try to test it using my API Gateway (AWS Lambda Proxy Integrations in API Gateway ) it just considers one arguement basically 'greeter'. 'greeter1' is not considered at all.

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

I tried all options but somehow it is reading only 1 argument.

推荐答案

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

AWS Lambda automatically monitors Lambda functions on your behalf, reporting metrics through Amazon CloudWatch. You could check it (go to monitoring Tab on lambda function, then click on 'View on CloudWatch'). You will see that event has 'greeter' parameter only ( console.log('Received event:', JSON.stringify(event, null, 2)); prints to log as well).

发生这种情况是因为您尚未在Gateway API上映射每个参数.您可以在方法属性的集成请求"/映射模板"中完成此操作.

It happened because you haven't mapped every one of the parameters on your Gateway API. You could do it in 'Integration Request'/'Mapping Template' of your method's properties.

文章.

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

Your template should be something like next example:

{
    "greeter": "$input.params('greeter')",
    "greeter1": "$input.params('greeter1')",
    "Data": $input.json('$')
}

  • $ input.params-来自param的地图数据
  • $ input.json('$')-映射请求正文中的数据(如果是postput)
    • $input.params - map data from param
    • $input.json('$') - map data from request body (if it is post or put)
    • 这篇关于读取事件参数AWS lambda的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆