如何通过GET方法将API网关与Lambda集成

时间:2016-08-18 13:53:28

标签: node.js amazon-web-services lambda aws-lambda aws-api-gateway

我在尝试将AWS API GatewayAWS Lambda进行整合时感到非常困惑,因为我试图通过GET方法执行lambda函数,而且我的函数总是返回无效参数。

  

{" errorMessage":"错误 - 无效的组ID - 未定义 - alexa id:   未定义"} |

这是因为参数未到达函数,而idgrupo变量为<=0

我试图以这种形式执行URL的lambda函数:

domain.execute-api.us-east-1.amazonaws.com/prod/chkneopairtoken?idgrupo=3823&clientId={321356-6666-4745}&keypair=90809276

在我的Lambda函数中,我正在做:

var idgrupo = event.idgrupo;
var alexaClientId = event.clientId;
var keypair = event.keypair;

if (idgrupo > 0){

} else{
        console.log("Error - Invalid Group ID - " + idgrupo + " - alexa id: " + alexaClientId + " - ");
        //callback(null, "Error - Invalid Group ID - " + idgrupo + " - alexa id: " + alexaClientId);
        context.fail("Error - Invalid Group ID - " + idgrupo + " - alexa id: " + alexaClientId);
    }

是否有可能做我想做的事情? 我认为这不是API网关和AWS Lambda之间的集成错误,因为该函数返回我的自定义错误消息,我相信它是传输参数错误。

2 个答案:

答案 0 :(得分:1)

返回资源GET的“集成请求”,在“正文映射模板”

  1. 选择“Request body passthrough”
  2. 的推荐选项
  3. 添加映射模板(单击“添加映射模板”操作)
  4. 为内容类型
  5. 编写“application / json”
  6. 添加此模板
  7. {
        "idgrupo" : "$input.params('idgrupo')",
        "clientId" : "$input.params('clientId')",
        "keypair" : "$input.params('keypair')"
    }
    

答案 1 :(得分:0)

在API网关控制台的“集成请求”下的“映射模板”部分中,为要提交的内容类型创建模板,然后选择“方法请求直通”。这会将所有内容传递给Lambda函数。

然后,在您的Lambda函数代码中,您需要通过event.params.idgrupoevent.params.clientId等引用这些网址参数值。