AWS Chalice部署Lambda时出现非预期解压大小限制错误
AWS Chalice部署Lambda时出现未压缩包大小限制异常的原因
部署时触发的错误提示:
An error occurred (InvalidParameterValueException) when calling the UpdateFunctionCode operation: Unzipped size must be smaller than 93963569 bytes
核心原因
- Chalice默认用Lambda层存储依赖:Lambda函数本身的未压缩包限制是250MB,但单个Lambda层的未压缩包限制为100MB。Chalice部署时会自动把项目依赖打包成独立层,同时Chalice自身框架代码会占用部分层空间,留给业务依赖的剩余容量就降到了约90MB,超过这个值就会触发错误。
- 部署模式差异:直接上传Lambda函数包时,代码与依赖合并打包,遵循函数本身的250MB未压缩限制;但Chalice默认逻辑会将依赖分离到层,因此受限于层的单个大小限制。
- 依赖文件冗余:项目中可能包含
__pycache__、测试文件、依赖包自带的文档/示例等无用文件,这些会大幅增加未压缩体积,触发限制。
解决方法
- 清理冗余文件:在项目根目录创建
.chaliceignore文件,添加规则排除非必要文件,例如:
安装依赖时使用__pycache__/ tests/ *.md *.txt */__pycache__/pip install --target=vendor --no-cache-dir,避免缓存文件混入。 - 关闭自动层管理:修改
.chalice/config.json,将manage_layers设置为false,Chalice会把依赖和代码打包在一起,使用Lambda函数本身的250MB未压缩限制。注意此方式下压缩后的总包大小不能超过50MB的上传限制。 - 拆分依赖到多个层:若依赖体积确实过大,可手动将不同模块的依赖拆分到多个Lambda层,每个层控制在未压缩100MB以内,再在Chalice配置中引用这些自定义层。
内容的提问来源于stack exchange,提问作者Adil Khan
相关产品推荐
相关产品推荐

