我使用代理集成使用api网关公开了多个lambda。有时,我会收到状态代码502的奇怪错误。蓝光云表里什么都没有。下面我发布了用于示例请求的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故障,应该由它们来处理。
发布于 2018-05-14 06:31:15
我在这里列出一个可能的原因..。
当AWS被配置为在VPC中运行时。它从VPC中每次执行一个IP。
如果VPC没有太多的免费if,那么您的lambda就会默默地失败:
我个人面临的问题涉及到有限的IP,增加IP解决了这个问题。
以下文本来自这链接
您指定的子网应该有足够的可用IP地址来匹配ENIs的数量。 我们还建议您在Lambda函数配置中的每个可用性区域中指定至少一个子网。通过在每个可用性区域中指定子网,您的Lambda函数可以在另一个可用性区域中运行,如果其中一个地址下降或耗尽了IP地址。 备注 如果您的VPC没有足够的ENIs或子网IP,那么您的Lambda函数将不会随着请求的增加而扩展,您将看到功能故障的增加。AWS目前不会将由于ENIs或IP地址不足而导致的错误记录到CloudWatch日志。如果您看到错误增加而没有相应的CloudWatch日志,则可以同步调用Lambda函数以获得错误响应(例如,在AWS控制台中测试Lambda函数,因为控制台同步调用Lambda函数并显示错误)。
https://stackoverflow.com/questions/48111689
复制相似问题