InvalidParameterValueException aws resource_error ai_generated true

调用 CreateFunction 操作时发生错误 (InvalidParameterValueException):解压后的大小必须小于 262144000 字节

An error occurred (InvalidParameterValueException) when calling the CreateFunction operation: Unzipped size must be smaller than 262144000 bytes

ID: aws/lambda-s3-zip-extract-failed

其他格式: JSON · Markdown 中文 · English
82%修复率
88%置信度
1证据数
2023-08-10首次发现

版本兼容性

版本状态引入弃用备注
AWS Lambda API 2015-03-31 active
AWS SDK for Python 1.27.0 active
SAM CLI 1.80.0 active

根因分析

Lambda 部署包的解压后大小(包括层和代码)超过了 250 MB 的限制。

English

The Lambda deployment package's unzipped size exceeds the 250 MB unzipped limit, including layers and code.

generic

官方文档

https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html

解决方案

  1. 通过删除未使用的依赖来减少部署包大小。对于 Python,使用虚拟环境,并仅用 'pip install --no-deps' 安装必要的包。然后重新构建并部署。
  2. 使用 AWS Lambda 层将大型库(例如 numpy、pandas)从部署包中分离。创建一个包含该库的层,然后在函数配置中引用它。
  3. 使用 Lambda 容器镜像支持:将函数打包为 Docker 镜像(最大 10 GB),而不是 .zip 文件。示例:'docker build -t myfunction . && aws ecr create-repository --repository-name myfunction && docker push ...'。

无效尝试

常见但无效的做法:

  1. 90% 失败

    Compressing the deployment package more aggressively (e.g., using maximum compression) doesn't reduce the unzipped size, which is what matters for the limit.

  2. 70% 失败

    Deleting unnecessary files from the package but still including large libraries (e.g., full Python packages) often fails because the unzipped size remains above 250 MB.