Api AWS错误:无法将代理集成配置为转换响应
我是Amazon Lambda API实现的初学者 我只是部署了一个非常简单的API:一个非常简单的lambda函数,使用Python 2.7打印“Hello World”,由API网关触发。但是,当我单击InvokeURL链接时,它会告诉我“{”消息“:“内部服务器错误”}” 因此,我试图找出这里的错误,因此我点击API本身,我可以看到在我的方法执行中以下内容是灰色的:“集成响应:代理集成不能配置为转换响应。”Api AWS错误:无法将代理集成配置为转换响应,api,amazon-web-services,lambda,aws-lambda,aws-api-gateway,Api,Amazon Web Services,Lambda,Aws Lambda,Aws Api Gateway,我是Amazon Lambda API实现的初学者 我只是部署了一个非常简单的API:一个非常简单的lambda函数,使用Python 2.7打印“Hello World”,由API网关触发。但是,当我单击InvokeURL链接时,它会告诉我“{”消息“:“内部服务器错误”}” 因此,我试图找出这里的错误,因此我点击API本身,我可以看到在我的方法执行中以下内容是灰色的:“集成响应:代理集成不能配置为转换响应。” 我已经测试了许多不同的配置,但仍然面临相同的错误。我不知道为什么这个步骤是灰色的
我已经测试了许多不同的配置,但仍然面临相同的错误。我不知道为什么这个步骤是灰色的。我在尝试集成API网关和lambda函数时遇到了同样的问题。基本上,花了几个小时后,我明白了。 因此,当您创建新资源或方法时,默认设置了使用Lambda代理集成 所以你需要移除这个。遵循集成请求并取消选中使用Lambda代理集成 您将看到下图 然后在您的资源,操作选项卡中,选择启用CORS 完成后,再次部署API并测试函数
祝你好运…Lambda响应应该是API网关要处理的特定格式。你可以在帖子中找到详细信息
当我开发前端时,我的API在Postman中工作,但不是在本地工作。当我试图在我的资源上为GET、POST和OPTIONS启用CORS时,我也遇到了同样的错误,在搜索了@aditya之后,答案让我走上了正确的轨道,但我不得不稍微调整代码 我需要添加
res.statusCode
和两个标题,它就开始工作了
// GET
// get all myModel
app.get('/models/', (req, res) => {
const query = 'SELECT * FROM MyTable'
pool.query(query, (err, results, fields) => {
//...
const models = [...results]
const response = {
data: models,
message: 'All models successfully retrieved.',
}
//****** needed to add the next 3 lines
res.statusCode = 200;
res.setHeader('content-type', 'application/json');
res.setHeader('Access-Control-Allow-Origin', '*');
res.send(response)
})
})
在集成请求中,在“代理集成”旁边有一个复选框。代理集成不支持响应转换--您的Lambda函数需要以您希望的方式呈现响应。换句话说,您不需要为Lambda代理集成设置集成响应,但是您可以使用API网关特定的响应格式控制Lambda函数内部的响应。这是正确的。
// GET
// get all myModel
app.get('/models/', (req, res) => {
const query = 'SELECT * FROM MyTable'
pool.query(query, (err, results, fields) => {
//...
const models = [...results]
const response = {
data: models,
message: 'All models successfully retrieved.',
}
//****** needed to add the next 3 lines
res.statusCode = 200;
res.setHeader('content-type', 'application/json');
res.setHeader('Access-Control-Allow-Origin', '*');
res.send(response)
})
})