测试API Gateway
在lambda中添加API gateway触发器后,我们就可以通过call API的方式来触发lambda函数,如果我们不带任何参数进去,可以直接在浏览器call API。
(如何创建lambda和API gateway在AWS documention中都有详细教程。)
比如:
https://*******.execute-api.us-west-2.amazonaws.com/yourtest/yourmethod
直接在浏览器call这个网址,会触发lambda函数,如果你的lambda是初始状态,会返回‘Hello from lambda’。这说明API触发lambda成功了。
但是如果我们的lambda有实际功能,需要带参数进去,直接在浏览器call API会失败,比如:
https://*******.execute-api.us-west-2.amazonaws.com/yourtest/yourmethod?key=value
这时我们需要使用高级的测试工具比如curl和postman,我使用的是postman,AWS documention中提供了curl的使用方法,可以去参考一下。当然也可以直接在AWS API gateway页面里直接测试
选择自己的请求类型和参数就可以了。
使用postman的话更加简单,把API地址复制过去,然后设置参数点击send就可以了。
"message": "Internal server error"
出现这个问题就是API打不通了,可能是网络问题,或者是地址错了。当然还有一个原因,就是我们的lambda函数里没有对传过来的参数处理不正确。
比如你的code是这样的 value = event['queryStringParameters']['key'], 但是你传进去的是'Fuck' = 'value'。所以你的code拿不到这个'key',会报错,但是API Gateway这里不会返回你lambda的报错,它不管的,直接扔一个502就完事儿了,所以你就看见了"message": "Internal server error"。
所以出现这个问题的时候可以确认一下是不是code没写好有bug,多写点try,控制一下输入的参数就可以了。
希望对大家有帮助!