【发布时间】:2018-11-28 12:06:26
【问题描述】:
同步调用:如果函数被同步调用并且 受到限制,Lambda 返回 429 错误,调用服务为 负责重试。 ThrottledReason 错误代码说明 您是否遇到了功能级别的节流阀(如果指定)或 帐户级别限制(请参阅下面的注释)。每个服务可能有自己的 重试策略。例如,CloudWatch Logs 重试失败的批处理 到五次,重试之间有延迟。对于事件源列表 及其调用类型,请参阅支持的事件源。
我不确定我对上面这句话的理解是否正确,如果我错了,请纠正我。
- 当 lambda 受到限制时,它会将
429 Error返回到 API 网关。 - 调用服务(此处为 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-gateway(代理集成)的错误格式,然后,API-gateway 返回 502 Error 给调用 API 的客户端。
我希望重试失败的请求。我该怎么办?
【问题讨论】:
-
服务可能会重试请求,具体取决于该特定服务的重试策略。您正在对我认为不正确的 API 网关重试策略做出假设。
标签: amazon-web-services aws-lambda aws-api-gateway