随机状态代码:连接到 lambda 的 AWS API 网关上出现 502 错误



我使用代理集成通过 api 网关公开了多个 lambda。我不时收到状态代码 502 的奇怪错误。 lambda 云监视日志中没有任何内容。下面我发布了示例请求的 api 网关日志:

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Received response. Integration latency: 231 ms
(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Endpoint response body before transformations:
{
"Message": "An error occurred and the request cannot be processed.",
"Type": "Service"
}
(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Endpoint response headers: 
{
Connection=keep-alive, 
x-amzn-RequestId=0cbc9dee-f1bd-11e7-857b-91f7f814692c, 
x-amzn-ErrorType=ServiceException, 
Content-Length=86, 
Date=Fri, 05 Jan 2018 02:06:32 GMT, 
Content-Type=application/json
}
(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Execution failed due to configuration error: Malformed Lambda proxy response
(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Method completed with status: 502

基本上,似乎 api 网关无法访问 lambda,并且对 lambda 的调用正在返回:

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Endpoint response body before transformations:
{
"Message": "An error occurred and the request cannot be processed.",
"Type": "Service"
}

还有其他人遇到这些问题吗?从我这边唯一可能的解决方法是编写重试机制,但从我的角度来看,我似乎缺少一些配置,或者这是他们应该处理的 AWS 故障。

我在这里列出了一个可能的原因......

当 AWS Lambda 配置为在 VPC 中运行时。每次从 VPC 执行需要一个 IP。

如果 VPC 没有太多免费 IP,那么您的 lambda 将静默失败:(

我个人面临过有关有限 IP 的问题,增加 IP 解决了这个问题。

此链接的下方文本

指定的子网应具有足够的可用 IP 地址 以匹配弹性网卡的数量。

我们还建议您在每个子网中至少指定一个子网 Lambda 函数配置中的可用区。通过指定 每个可用区中的子网,您的 Lambda 函数可以 在另一个可用区中运行,如果一个可用区出现故障或 IP 用完 地址。

注意

如果您的 VPC 没有足够的 ENI 或子网 IP,则您的 Lambda 函数不会随着请求的增加而扩展,您将看到一个 功能故障增加。AWS Lambda 当前不记录 由于弹性网卡或 IP 不足而导致的云观察日志错误 地址。如果您看到错误增加而没有相应的错误 CloudWatch Logs,您可以同步调用 Lambda 函数 获取错误响应(例如,在 AWS Lambda 控制台,因为控制台调用您的 Lambda 函数 同步并显示错误)。

最新更新