调节Lambda时,AWS Lambda + API网关返回502错误

时间:2018-06-19 13:37:48

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

  

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

     

Reference

我不确定我对上述句子的理解是正确的,如果我错了,请修复我。

  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返回{"Reason":"ReservedFunctionConcurrentInvocationLimitExceeded","Type":"User","message":"Rate Exceeded."}的API网关(代理集成)格式错误,然后,API网关将502 Error返回给调用API的客户端。

我希望重试失败的请求。我该怎么处理?

1 个答案:

答案 0 :(得分:2)

  

每个服务可能都有自己的重试策略。

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

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