当前位置: 首页 > 知识库问答 >
问题:

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

诸葛立果
2023-03-14

我使用代理集成的api网关公开了多个lambda。我时不时会收到状态代码502的奇怪错误。lambda cloud watch日志中没有任何内容。下面我发布了示例请求的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故障,他们应该处理这些配置。

共有1个答案

都飞跃
2023-03-14

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

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

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

我个人面临着有限知识产权的问题,增加知识产权解决了这个问题。

下面是此链接的文本

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

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

笔记

如果您的VPC没有足够的ENI或子网IP,您的Lambda函数将不会随着请求的增加而缩放,并且您将看到函数失败的增加。AWS Lambda目前不记录由ENI或IP地址不足引起的CloudWatch日志错误。如果您在没有相应CloudWatch日志的情况下看到错误增加,您可以同步调用Lambda函数以获得错误响应(例如,在AWS Lambda控制台中测试您的Lambda函数,因为控制台同步调用您的Lambda函数并显示错误)。

 类似资料:
  • spread.js:25 GET[大URL]502() 然而,当我在Chrome中转到Network选项卡并在browser中查看复制的链接地址时,我会得到一个带有我想要的数据的JSON响应。我在CloudWatch中找不到错误。 标题

  • 我试图在aws.lamda-service上的node.js中创建函数,并在函数控制台进行测试,效果良好,但当调用api时,它不能导出到外部,api网关错误“malformed Lambda proxy response”状态错误502 有什么想法吗

  • 我通过Spring Webflux框架使用Reactor Netty,以便将数据发送到远程内容交付网络。当客户端请求完成时,默认的反应器Netty行为是保持连接活动并将其释放回底层连接池。 一些内容交付网络建议在某些类型的状态代码(例如500个内部服务器错误)上重新解析DNS。为了实现这一点,我添加了一个自定义的Netty和,但我也需要关闭连接,否则它将被释放回池中,并且不会重新解析DNS。 如何

  • 我有一个问题,随机502网关错误使用nginx和php-fpm。在我的案例中,我发现了一个场景,其中各种php.inierror_log设置和error_reporting级别导致随机502网关错误出现。 通过改变php。ini设置错误报告和错误日志我能够使502网关错误消失,但更重要的是,我能够看到日志中真正的php错误并修复它们。 主要的问题是,如果“error\u reporting设置为d

  • 我在AWS API网关中有一个REST API,它调用Python Lambda函数并返回一些结果。在大多数情况下,此工作流工作正常,这意味着执行Lambda函数并将结果传递回API,API反过来返回200 OK响应。 然而,我很少从API中得到500个错误代码,而Lambda似乎甚至没有执行。response.reason显示:“内部服务器错误”,没有提供其他信息。 在方法或参数格式方面,对AP

  • 同步调用:如果函数被同步调用并被限制,Lambda将返回429错误,调用服务将负责重试。ThrottledReason错误代码解释了您是遇到了功能级节流(如果指定)还是帐户级节流(请参见下面的注释)。每个服务都可能有自己的重试策略。例如,CloudWatch日志会重试失败的批处理多达五次,每次重试之间会有延迟。有关事件源及其调用类型的列表,请参阅支持的事件源。 参考文献 我不确定我对以上句子的理解