跳至内容

如何解决 API Gateway 端点与 Lambda 集成时出现的问题?

2 分钟阅读
0

我想将 Amazon API Gateway 端点与 AWS Lambda 集成,但我收到了错误。

解决方法

对于收到的错误,请按照以下故障排除步骤进行操作。

在开始之前,打开 Amazon CloudWatch Logs 以对 API Gateway 错误进行故障排除。对于 Log level(日志级别),选择 INFO 以生成所有请求的执行日志。

API Gateway 没有 Lambda 函数权限

当 API Gateway 没有调用 Lambda 函数的权限时,将会出现 Invalid permissions on Lambda function(Lambda 函数权限无效)错误。要解决此问题,请参阅如何解决 API Gateway REST API 中的“Lambda 函数权限无效”错误?

**注意:**如果您使用其他服务来部署您的 API Gateway 资源,例如 AWS CloudFormation,则向 AWS::Lambda::Permission 资源授予权限。

发生节流限制

如果因为请求量大而限制了后端服务,则 API Gateway API 可能会返回内部服务器错误。激活指数回退和重试机制,然后再次发送请求。如果问题仍然存在,请检查您的 API Gateway 配额。如果您超出了服务配额,请申请增加 Lambda 函数的并发配额,以免该函数受到节流限制。

由于 Lambda 函数节流问题,您还可能会收到 Rate exceeded(超出速率)和 429 TooManyRequestsException 错误。有关详细信息,请参阅如何对 Lambda 函数的“Rate exceeded”(超出速率)和“TooManyRequestsException”节流错误进行故障排除?

状态代码映射不正确或缺失

当 HTTP 状态代码映射不正确或缺失时,您可能会收到一条 500 错误消息,类似于以下内容:

“由于配置错误,执行失败: 输出映射是指无效的方法响应: 2xx/4xx/5xx”。

要解决此错误,请配置 API 操作的集成请求和响应,以返回正确的状态代码

Lambda 服务异常未得到管理

如果您不管理 Lambda 服务异常,例如 Lambda 函数超时,则会收到 Lambda.Unknown 错误。要防止 Lambda 函数超时,请将您的 Lambda 函数代码设置为幂等

有关详细信息,请参阅 Error handling patterns in API Gateway and Lambda

Lambda 集成端点超时问题

所有集成类型的 API Gateway 集成超时默认配额限制为 29 秒。如果您的 Lambda 函数返回响应的时间超过 29 秒,则请求将失败,并显示 504 Endpoint request timed out(504 端点请求超时)错误。

确保您的 Lambda 函数在 29 秒内返回响应。如果您的 Lambda 函数无法在 29 秒内返回响应,请为集成超时限制提交配额增加申请

**注意:**对于区域 API 和私有 API,您可以将集成超时时间增加到 29 秒以上。但是,增加集成超时时间可能需要降低您的 AWS 账户的区域级节流配额。

Lambda 函数输出的 JSON 格式不正确

如果集成的 Lambda 函数的输出不符合 REST API 指定的 JSON 格式,则您会收到 malformed proxy(代理格式不正确)错误。对于代理集成中的 Lambda 函数的输出以及 Lambda 授权方的输出,请确保使用正确的 JSON 格式。

用于代理集成的 Lambda 函数示例:

{

"isBase64Encoded": true|false,

"statusCode": httpStatusCode,

"headers": { "headerName": "headerValue", ... },

"multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },

"body": "..."

}

相关信息

如何对 API Gateway HTTP 调用错误进行故障排除?