如何排查调用 Lambda 函数时出现的 502 和 500 错误?

上次更新时间:2021 年 2 月 19 日

当我尝试调用 AWS Lambda 函数时,请求失败,并显示 502 或 500 服务器端错误。如何排查这些错误?

解决方法

首先,鉴别您收到的特定 Lambda Invoke API 错误。然后,按照该错误对应的问题排查步骤操作。

注意:有关可能的错误列表及其描述,请参阅 Lambda Invoke API 参考中的错误部分。

InvalidRuntimeException

配置 Lambda 函数,使其为您的函数代码使用正确的 Lambda 运行时

InvalidSecurityGroupIDException

确认您在 Lambda 函数配置中指定了正确的 Amazon VPC 安全组 ID。有关更多信息,请参阅配置 Lambda 函数以访问 VPC 中的资源

InvalidZipFileException

KMSAccessDeniedException

检查您的 Lambda 函数的 AWS Identity and Access Management (AWS IAM) 权限以及您的 AWS Key Management Service (AWS KMS) 密钥策略

KMSAccessDeniedException 错误发生的原因通常是,在 Lambda 函数的 IAM 角色被删除后,再使用相同名称重新创建角色。如果发生这种情况,请为函数配置新的 IAM 角色。然后,再次部署该函数并重新配置旧的 IAM 角色。

有关更多信息,请参阅使用 AWS KMS 中的密钥策略

注意:创建和更新 Lambda 函数的 IAM 用户必须获得使用 CMK 的权限

KMSDisabledException

验证 CMK 是否已启用。有关更多信息,请参阅启用和禁用密钥

KMSInvalidStateException

对于 AWS KMS Decrypt API 请求,您的 CMK 处于无效状态。验证 CMK 是否已启用

有关更多信息,请参阅密钥状态对客户主密钥的使用有何影响

KMSNotFoundException

您的请求中指定的 CMK 必须与您的 Lambda 函数位于同一个 AWS 区域和账户。如果两者的区域不同,请改用位于同一区域的另一个 CMK(或者创建一个新 CMK)。

ResourceNotReadyException

Lambda 回收未使用的网络接口。此操作可以将函数置于非活动状态。当非活动的函数被调用时,该函数将进入待处理状态,同时还原 VPC 网络访问。在函数处于待处理状态时发生的第一次调用和所有其他调用都失败,然后返回 ResourceNotReadyException 错误。

要解决此错误,请等到 VPC 连接恢复。然后,再次调用 Lambda 函数。

ServiceException

有时,Lambda 服务本身可能会发生内部错误。如果您收到 500 错误,请检查 AWS 服务运行状况控制面板以确定 Lambda 是否不可用。有关更多信息,请参阅 AWS 是否出现故障?

如果 Lambda 可用,请重新尝试调用您的 Lambda 函数的请求。

SubnetIPAddressLimitReachedException

子网的大小由其 CIDR 块定义。确保您在 Amazon VPC 中指定的 CIDR 块具有足够多的可用 IP 地址,以满足启用了 Amazon VPC 的 Lambda 函数的要求。有关更多信息,请参阅 VPC 和子网大小调整

您账户中 Hyperplane ENI 数量已超过最大限制

每个 Virtual Private Cloud (VPC) 的 Hyperplane 弹性网络接口 (ENI) 的最大数量默认为 250 个。有关如何请求提高限制的信息,请参阅 AWS 服务配额


这篇文章对您有帮助吗?


您是否需要账单或技术支持?