我将AWS Lambda集成到API Gateway中。当前的lambda只是返回一个错误:
exports.handler = (event, context, callback) => {
context.fail(JSON.stringify({
status: 500,
errors: 'This is definitely the same endpoint.'
}));
};我在API Gateway的method response中添加了HTTP status 500响应,并使用regex *"status": 500 .*将集成响应映射到500响应。
当我使用AWS中的方法测试功能进行测试时,我得到了我期望的500响应:

但是,当使用Postman向端点发送命令时,我得到一个200状态:

这怎么可能呢?方法测试似乎表明我的集成响应和方法响应设置是正确的,并且我的正则表达式设置正确,但是API Gateway和世界上其他地方之间缺少了什么会产生这种不同的结果?
发布于 2019-06-11 17:09:22
你有没有试过部署API?也许重新部署可以解决这些问题。
发布于 2019-06-11 16:22:35
你是不是已经看过Handle Custom Lambda Errors in API Gateway指南了?
建议的格式为:
{
"isBase64Encoded" : "boolean",
"statusCode": "number",
"headers": { ... },
"body": "JSON string"
}所以基本上需要返回这个JSON结构。我用AWS serverless express library (第100-105行)检查了一下--我们使用它--它返回了这个结构。
主要的挑战是,将HTTP响应发送到客户端是API网关的一项任务,为此,必须以API网关无法理解的格式从lambda返回有效的JSON响应。lambda的执行状态也将是200 (因为它工作在A- of ),但是API Gateway会将您的响应转换为500。这也是为什么需要这种双/三重JSON编码(JSON-as-string in JSON-attributes)的原因。
https://stackoverflow.com/questions/56538608
复制相似问题