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

限制Lambda时,AWS Lambda API网关返回502错误

闻人鸿文
2023-03-14

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

参考文献

我不确定我对以上句子的理解是否正确,如果我错了,请纠正我。

  1. 当lambda被限制时,它将返回429 Error到API网关。
  2. 调用服务,在这里的API网关,重试请求。

然而,它并没有像预期的那样工作。下面是当lambda被节流时cloudWatch的API网关日志。

API-Gateway-Execution-Logs_3f1frvtwe4/sam-sm-test 2a38a4a9316c49e5a833517c45d31070 (bededbf0-73ae-11e8-87a2-f51933ef104f) Endpoint response body before transformations: {"Reason":"ReservedFunctionConcurrentInvocationLimitExceeded","Type":"User","message":"Rate Exceeded."}
API-Gateway-Execution-Logs_3f1frvtwe4/sam-sm-test 2a38a4a9316c49e5a833517c45d31070 (bededbf0-73ae-11e8-87a2-f51933ef104f) Endpoint response headers: {Connection=keep-alive, x-amzn-RequestId=bedfc624-73ae-11e8-bd28-6345cb3606c4, x-amzn-ErrorType=TooManyRequestsException, Content-Length=104, Date=Tue, 19 Jun 2018 10:51:39 GMT, Content-Type=application/json}
API-Gateway-Execution-Logs_3f1frvtwe4/sam-sm-test 2a38a4a9316c49e5a833517c45d31070 (bededbf0-73ae-11e8-87a2-f51933ef104f) Execution failed due to configuration error: Malformed Lambda proxy response

实际上,Lambda返回{“原因”:“ReservedFunctionConcurrentInvocationLimitExcelled”,“Type”:“User”,“message”:“Rate Excelled.”}这是API网关(代理集成)的错误格式,因此,API网关向调用API的客户端返回502 Error

我想找回失败的请求。我怎么能处理它?

共有1个答案

缑嘉玉
2023-03-14

每个服务可以具有自己的重试策略。

API网关不会重试失败的Lambda调用。如果要处理重试,必须在调用API网关的客户端中完成。

如您所建议的,当API网关收到格式错误的Lambda代理响应时,会返回502错误(请参阅https://aws.amazon.com/premiumsupport/knowledge-center/malformed-502-api-gateway/)。

 类似资料:
  • 经过大量的谷歌搜索和几个小时的尝试和错误,我找不到为什么我得到这个错误消息: 由于配置错误,执行失败:错误的Lambda代理响应 当我使用testlambda功能运行lambda时,它工作得很好。对类似问题的回答表明,lambda的响应需要满足此格式: 下面是我使用的lambda(遵循此格式): 我不认为这是一个配置问题,我正在使用Terraform来构建基础设施,如果这有什么帮助的话。提前谢谢!

  • 我创建了一个简单的AWS Lambda函数,使用python 3.6添加两个数字。它读取 Lambda函数 JSON主体

  • 我也没有在AWS文档中找到任何实质性的东西。

  • null service-configuration-file.yml ingress-configuration-file.yml(基于主机的路由) 我遵循了以下步骤: 输出结果是: 不幸的是,当我试图在浏览器上访问Dash应用程序时,我从Nginx得到了一个502坏网关错误。你能帮帮我吗?因为我的Kubernetes知识有限。提前谢了。

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

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