如何解决AWS API Gateway错误:代理集成无法配置为转换响应
我正在尝试使用node.js中的Lambda函数构建API,并且我想访问event
对象,以便可以在API中使用请求正文和路径参数。我在Aurora PostgreSQL中有一个数据库,并且正在使用API网关来调用Lambda函数。这是我的简单GET请求代码:
console.log('PostgreSQL GET Function');
var pg = require("pg");
exports.handler = function(event,context) {
var conn = "postgres://URL";
var client = new pg.Client(conn);
client.connect();
var id = event.id;
console.log("EVENT: \n" + JSON.stringify(event,null,2))
console.log('Connected to PostgreSQL database');
var query = client.query("SELECT * from USERS;");
query.on("row",function (row,result) {
result.addRow(row);
});
query.on("end",function (result) {
var jsonString = JSON.stringify(result.rows);
var jsonObj = JSON.parse(jsonString);
console.log(jsonString);
client.end();
context.succeed(jsonObj);
});
};
当我尝试将event
对象记录到控制台中时,我得到一个空对象作为结果{}。
2020-09-29T06:05:34.423Z ... INFO EVENT:{}
因此,我查阅了文档,并得知我必须启用“代理集成”,但是这样做后,我的API已停止运行,并且出现错误消息“内部服务器错误”
Proxy integrations cannot be configured to transform responses
我要去哪里错了,我该如何解决呢?
解决方法
如果您在API中更改了非代理代理集成,则需要修改您的Lambda代码。 event
对象现在将有所不同,并且您还需要以正确的格式返回响应。
event
对象的结构如下所示:
该功能所需的输出显示在:
此外,您还应该检查CloudWatch Logs,以查找您可以发挥作用的任何错误消息,以帮助对其进行故障排除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。