AWS Lambda 中的调用问题疑难解答 - AWS Lambda
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS Lambda 中的调用问题疑难解答

当您调用 Lambda 函数时,Lambda 在将事件发送到函数或(对于异步调用)发送到事件队列之前,先验证请求并检查扩展容量。调用错误可能是由请求参数、事件结构、函数设置、用户权限、资源权限或限制中的问题引起的。

如果您直接调用函数,则会在 Lambda 的响应中看到调用错误。如果您使用事件源映射或通过其他服务异步调用函数,则可能会在日志、死信队列或失败事件目标中找到错误。错误处理选项和重试行为因调用函数的方式和错误类型而异。

有关 Invoke 操作可以返回的错误类型的列表,请参阅Invoke

错误:User: arn:aws:iam::123456789012:user/developer is not authorized to perform: lambda:InvokeFunction on resource: my-function (用户: arn:aws:iam::123456789012:user/developer 未获得授权,无法对资源执行 lambda:InvokeFunction: my-function)

您的 IAM 用户或您代入的角色需要权限才能调用函数。此要求还适用于 Lambda 函数以及其他调用函数的计算资源。将 AWSLambdaRole 托管策略或允许对目标函数执行 lambda:InvokeFunction 操作的自定义策略添加到 IAM 用户。

注意

与 Lambda 中的其他 API 操作不同,IAM (lambda:InvokeFunction) 中的操作名称不匹配用于调用函数的 API 操作 (Invoke) 的名称。

有关更多信息,请参阅AWS Lambda 权限

错误:ResourceConflictException:此时无法执行该操作。该函数目前处于以下状态:待定

如果您在创建时将函数连接到 VPC,则该函数会在 Lambda 创建弹性网络接口时进入 Pending 状态。在此期间,您无法调用或修改函数。如果您在创建后将函数连接到 VPC,则可以在更新处于待处理状态时调用该函数,但无法修改其代码或配置。

有关更多信息,请参阅使用 Lambda API 监控函数的状态

错误: 一个函数卡在 Pending 状态达几分钟。

如果某个函数卡在 Pending 状态超过六分钟,请调用以下 API 操作之一来取消阻止它。

Lambda 取消处于暂停状态的操作并将函数置于 Failed 状态。然后,您可以删除该函数并重新创建它,或尝试其他更新。

问题:一个函数使用了所有可用的并发,导致其他函数被限制。

要将某个区域中的可用并发划分为池,请使用预留并发。预留并发可确保函数始终可以扩展到向其分配的并发,并且不会扩展到向其分配的并发之外。

问题:您可以直接调用您的函数,但是当另一个服务或账户调用它时,它不会运行。

您向其他服务和账户授予权限以在函数的基于资源的策略中调用函数。如果调用方是另一个账户,则该用户还需要函数调用权限

问题:函数在循环中被连续调用。

当您的函数在触发它的同一 AWS 服务中管理资源时,通常会发生这种情况。例如,可以创建一个函数来将对象存储在 Amazon S3 存储桶中,该存储桶配置了一个再次调用函数的通知。要使函数停止运行,请在函数配置页面上选择 Throttle (限制)。然后,确定导致递归调用的代码路径或配置错误。

错误: KMSDisabledException:Lambda 无法解密环境变量,因为使用的 KMS 密钥已被禁用。请检查功能的 KMS 密钥设置。

如果您的 KMS 密钥被禁用或者撤销了允许 Lambda 使用该密钥的授权,则可能会发生此错误。如果缺少授权,请将函数配置为使用其他密钥。然后,重新分配自定义密钥以重新创建授权。

错误:EFSMountFailureException:函数无法使用访问点 arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd 挂载 EFS 文件系统。

对函数文件系统 的挂载请求被拒绝。检查函数的权限,并确认其文件系统和访问点存在且可供使用。

错误:EFSMountConnectivityException:函数无法使用访问点 arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd 连接到 Amazon EFS 文件系统。检查您的网络配置,然后重试。

函数无法使用 NFS 协议(TCP 端口 2049)与函数的文件系统建立连接。检查 VPC 子网的安全组和路由配置

错误:EFSMountTimeoutException:由于挂载超时,函数无法使用访问点 {arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd} 挂载 EFS 文件系统

函数能够连接到函数的文件系统,但挂载操作超时。短时间后再试,并考虑限制函数的并发以减少文件系统的负载。

错误: EFSIOException:此函数实例已停止,原因是 Lambda 检测到某一 IO 进程花费的时间过长。

先前的调用超时,Lambda 无法终止函数处理程序。当附加的文件系统用完了突发信用并且基准吞吐量不足时,可能会出现此问题。要提高吞吐量,可以增加文件系统的大小或使用预置吞吐量。有关更多信息,请参阅吞吐量