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

时间:2018-01-05 10:30:44

标签: amazon-web-services aws-lambda aws-api-gateway

我使用代理集成使用api网关暴露了多个lambdas。我不时会收到状态代码为502的奇怪错误。 lambda云观察日志中没有任何内容。下面我发布了api网关日志以获取样本请求:

getElts

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

(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

还有其他人遇到过这些问题吗?只有我可以解决的问题是编写重试机制,但是从我的角度来看,我认为我错过了一些配置,或者是他们应该处理的AWS故障。

1 个答案:

答案 0 :(得分:6)

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

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

如果VPC没有太多免费IP,那么你的lambda将无声地失败:(

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

this链接

下方的文字
  

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

     

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

     

请注意

     

如果您的VPC没有足够的ENI或子网IP,那么您的Lambda   函数不会随着请求的增加而扩展,你会看到一个   增加功能失败。 AWS Lambda目前不记录   由ENI或IP不足导致的CloudWatch Logs错误   地址。如果您看到错误增加而没有相应的   CloudWatch Logs,您可以同步调用Lambda函数   获取错误响应(例如,测试您的Lambda函数   AWS Lambda控制台,因为控制台调用您的Lambda函数   同步并显示错误。)

相关问题