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

如何在AWS Lambda安装Python依赖包并存储至AWS S3缩短安装耗时

AWS Lambda Python依赖安装耗时过长解决方案

你当前在运行时实时pip安装带C扩展的numpy、pandas等包,需要执行编译流程,是耗时过长的核心原因,可通过以下方案解决:

方案1:预构建Lambda层(最优选择)

完全无需在Lambda运行环境执行安装、打包操作,提前在本地/同架构的Linux环境下预编译好所有依赖,直接打包为官方Lambda层使用:

  • 新建名为python的空文件夹(Lambda层要求依赖必须放在该目录下才能被自动识别)
  • 执行安装命令(如果是在x86架构环境打包给x86 Lambda使用):
    pip install requests==2.25.1 xlrd==2.0.1 pandas==1.2.4 numpy==1.19.5 -t ./python --no-cache-dir
  • 如果是在M系列Arm架构Mac上打包给x86 Lambda使用,需添加架构指定参数:
    pip install requests==2.25.1 xlrd==2.0.1 pandas==1.2.4 numpy==1.19.5 -t ./python --no-cache-dir --platform manylinux2014_x86_64 --only-binary=:all:
  • 将python目录打包为zip包:zip -r lambda-py-deps.zip ./python
  • 在AWS Lambda控制台创建自定义层,上传该zip包后绑定到你的函数即可,无需修改代码的导入逻辑,无额外运行时开销,冷启动速度最快

方案2:预打包依赖存S3,运行时直接拉取解压

如果你不想使用Lambda层,也可以将预打包好的依赖存到S3,Lambda冷启动时直接下载解压使用,打包操作同样在本地完成,不要放到Lambda运行时执行:

  • 本地按上述步骤安装好所有依赖后直接打包为zip,上传到你的S3桶,给Lambda执行角色授予该桶的读权限
  • Lambda代码替换原安装逻辑为下载解压逻辑即可,参考代码:
import boto3
import zipfile
import sys

s3_client = boto3.client("s3")
# 下载预编译好的依赖包
s3_client.download_file("你的S3桶名", "lambda-py-deps.zip", "/tmp/lambda-py-deps.zip")
# 直接解压到/tmp目录
with zipfile.ZipFile("/tmp/lambda-py-deps.zip", "r") as f:
    f.extractall("/tmp/")
# 添加依赖路径
sys.path.insert(1, "/tmp/")

该方案总耗时仅为下载+解压的时间,通常不超过10秒,远低于原实时安装的耗时。

你遇到的Lambda无法写入文件问题说明

Lambda仅开放/tmp目录的写入权限,默认容量为512MB,最大可配置到10GB,如果你尝试在/tmp以外的路径写入压缩包就会触发权限报错。即便你调整写入路径到/tmp可解决该问题,也不推荐在Lambda运行时执行安装、打包操作,会额外消耗计算资源、拉长执行时间。

内容的提问来源于stack exchange,提问作者Thanh Hải Võ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:48:02