AWS 错误:代理集成无法配置为转换响应
Posted
技术标签:
【中文标题】AWS 错误:代理集成无法配置为转换响应【英文标题】:AWS Error: Proxy integrations cannot be configured to transform responses 【发布时间】:2018-05-17 09:30:04 【问题描述】:我是亚马逊 Lambda-API 实施的初学者。
我只是部署了一个非常简单的 API:一个非常简单的 lambda 函数,使用 Python 2.7 打印“Hello World”,我使用 API Gateway 触发。但是,当我单击 Invoke URL 链接时,它会告诉我“"message": "Internal server error""。
因此,我想看看这里出了什么问题,所以我点击 API 本身,我可以在我的方法执行中看到以下内容为灰色:“集成响应:代理集成无法配置为转换回复。"
我已经测试了许多不同的配置,但我仍然面临同样的错误。我不知道为什么这一步是灰色的。
【问题讨论】:
在集成请求中,“代理集成”旁边有一个复选框。代理集成不支持响应转换 - 您的 Lambda 函数需要以您想要的方式呈现响应。 换句话说,您不需要为您的 Lambda 代理集成设置集成响应,但您可以使用 API Gateway 特定的响应格式控制您的 Lambda 函数内部的响应。跨度> 没错。 【参考方案1】:我在尝试集成 API 网关和 lambda 函数时遇到了同样的问题。基本上,花了几个小时后,我想通了。 因此,当您创建新资源或方法时,默认设置了 使用 Lambda 代理集成。
所以你需要删除它。按照Integration Request并取消勾选Use Lambda Proxy integration
你会看到下面的图片
然后在你的Resources,Atction标签中,选择Enable CORS
完成后再次部署您的 API 并测试功能。 Also, this topic will explain what's happening under the hood.
祝你好运……
【讨论】:
【参考方案2】:Lambda 响应应采用特定格式以供 API 网关处理。您可以在帖子中找到详细信息。 https://aws.amazon.com/premiumsupport/knowledge-center/malformed-502-api-gateway/
exports.handler = (event, context, callback) =>
var responseBody =
"key3": "value3",
"key2": "value2",
"key1": "value1"
;
var response =
"statusCode": 200,
"headers":
"my_header": "my_value"
,
"body": JSON.stringify(responseBody),
"isBase64Encoded": false
;
callback(null, response);
【讨论】:
【参考方案3】:当我开发前端时,我的 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)
)
)
【讨论】:
以上是关于AWS 错误:代理集成无法配置为转换响应的主要内容,如果未能解决你的问题,请参考以下文章
AWS Lambda 和 API Gateway 响应集成问题