You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何缩小含s3fs的Python AWS Lambda层体积,满足250MB容量限制

体积暴增原因说明

s3fs本身包体积仅不到100KB,但它依赖aiobotocore、botocore等组件,其中仅botocore默认安装后的体积就超过70MB,这是添加s3fs后层体积超出阈值的核心原因。

优化方案(保留Docker构建方式、保留s3fs依赖)

  • 第一步:安装依赖时禁用缓存
    修改Docker执行命令,添加--no-cache-dir参数避免pip缓存占用额外空间:
    docker run -v "$PWD":/var/task "lambci/lambda:build-python3.8" /bin/sh -c "pip install --no-cache-dir -r requirements.txt -t python/lib/python3.8/site-packages/; exit"
    
  • 第二步:清理非必要文件
    依赖安装完成后,进入python/lib/python3.8/site-packages/目录执行以下清理命令,删除缓存、测试用例、说明文档等无用文件:
    find . -type d -name "__pycache__" -exec rm -rf {} +
    find . -type f -name "*.pyc" -delete
    find . -type d -name "tests" -exec rm -rf {} +
    find . -type d -name "*.dist-info" -exec rm -rf {} +
    find . -type d -name "*.egg-info" -exec rm -rf {} +
    
  • 第三步:裁剪botocore冗余文件
    botocore默认携带所有AWS服务的API定义文件,你仅需用到S3相关能力,进入botocore/data/目录,删除除s3、sts之外的所有服务目录,这一步可直接减少50MB以上的占用。
  • 第四步:精简二进制文件
    对所有编译生成的动态链接库执行去调试信息操作,进一步压缩体积:
    find python/lib/python3.8/site-packages/ -name "*.so" | xargs strip
    
  • 第五步:检查重复依赖
    你的依赖列表中requests已经是scrapy的默认依赖,可从requirements.txt中移除避免重复安装;也可以通过依赖树检查是否存在多版本共存的冗余组件,删除重复安装的包。

完成以上操作后先执行du -sh python/确认解压后体积小于250MB,再执行原zip命令打包即可。

内容的提问来源于stack exchange,提问作者mmz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:06:02