Amazon API Gateway 和 AWS Lambda 中的错误处理模式
Posted
技术标签:
【中文标题】Amazon API Gateway 和 AWS Lambda 中的错误处理模式【英文标题】:Error handling patterns in Amazon API Gateway and AWS Lambda 【发布时间】:2017-06-23 08:16:37 【问题描述】:我创建了一个具有以下代码的简单 lambda 函数。
exports.handler = (event, context, callback) =>
const operation = event.body.operation;
console.log("operation = ", operation)
switch (operation)
case 'add': callback(null, 'post method');
break;
case 'add1': callback(null,
status: 0,
errorType: "InternalServerError",
errorCode: "001",
errorMessage: "post method error."
);
default: callback(null, 'Hello from Lambda');
break;
;
它将与 Amazon API Gateway 连接。使用能够获得成功和错误响应的 REST 客户端。但是 HTTP 状态码仍然是 200。然后我通过两种方式修改了 API Gateway 集成响应。
1. Selection pattern : “InternalServerError”
2. Selection pattern : “.*InternalServerError”
Method response : 500
但我仍然得到 200 HTTP 状态码。与此选择模式相关的实际问题是什么?
【问题讨论】:
您是否需要使用context.fail()
? (向下滚动过去接受的答案并阅读其他答案。)
【参考方案1】:
当 Lambda 函数使用 context.fail() 引发错误时,API Gateway 会检查错误模式。有关在 API GW 中处理 Lambda 错误的更多详细信息,请参阅此 article。
【讨论】:
【参考方案2】:在您的情况下,您需要从我的回答 here 中返回正确的 HTTP 响应:
【讨论】:
以上是关于Amazon API Gateway 和 AWS Lambda 中的错误处理模式的主要内容,如果未能解决你的问题,请参考以下文章
ELB 和 ECS 集群前的 Amazon API Gateway
AWS API Gateway Websockets——connectionID 在哪里?
尝试连接到 AWS Gateway 私有 API 时出现 UnknownHostException
如何使用 OpenAPI 为 AWS API Gateway 配置 CORS?