AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS Lambda 故障排除

本主题列出了您在使用 Lambda API、控制台或工具时可能会遇到的常见错误和问题。如果您发现某个问题未在此处列出,可以使用此页上的 Feedback 按钮来报告。

小节目录

部署

错误:EACCES: permission denied, open '/var/task/index.js' (EACCES: 权限被拒绝,打开“/var/task/index.js”)

错误:cannot load such file -- function (无法加载此文件 -- 函数)

错误:[Errno 13] Permission denied: '/var/task/function.py' ([Errno 13] 权限被拒绝:“/var/task/function.py”)

Lambda 运行时需要权限才能读取部署包中的文件。您可以使用 chmod 命令更改文件模式。以下示例命令使当前目录中的所有文件和文件夹都可供任何用户使用。

my-function$ chmod 644 $(find . -type f) my-function$ chmod 755 $(find . -type d)

错误:An error occurred (RequestEntityTooLargeException) when calling the UpdateFunctionCode operation (在调用 UpdateFunctionCode 操作时出错 (RequestEntityTooLargeException))

在将部署包或图层存档直接上传到 Lambda 时,ZIP 文件的大小最多为 50 MB。要上传一个较大的文件,请将此文件存储在 Amazon S3 中并使用 S3Bucket 和 S3Key 参数。

注意

当您直接使用 AWS CLI、AWS 开发工具包或通过其他方式上传文件时,二进制 ZIP 文件将转换为 Base64,其大小将增加约 30%。为了支持这一点以及请求中其他参数的大小,Lambda 应用的实际请求大小限制会更大。因此,50 MB 的限制是近似值。

调用

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

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

错误: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 权限

问题:函数执行时间太长。

如果您的代码在 Lambda 中运行所花费的时间长于在本地计算机上运行所花费的时间,则可能受到对该函数可用的内存或处理能力的限制。使用额外内存配置函数以增加内存和 CPU。

问题:日志未显示在 CloudWatch Logs 中。

问题:跟踪未显示在 AWS X-Ray 中。

您的函数需要权限才能调用 CloudWatch Logs 和 X-Ray。更新函数的执行角色以向其授予权限。

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

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

本页内容: