如何在AWS Lambda层添加awswrangler?解决模块导入错误
为AWS Lambda添加awswrangler层的方法
Lambda默认不包含awswrangler库,官方层列表也没有提供,因此需要自行构建兼容Lambda运行环境的层包,以下是两种可靠的实现方式:
方法一:用Docker构建(推荐,无需EC2)
这种方式通过模拟Lambda的运行环境打包,避免本地系统和Lambda环境的兼容性问题:
- 创建临时目录并进入:
mkdir awswrangler-layer && cd awswrangler-layer - 创建
requirements.txt文件,内容为:awswrangler==3.4.0 # 可根据需求指定版本,不指定则安装最新版 - 运行Docker命令安装依赖到Lambda层要求的目录结构(替换
python3.11为你的Lambda函数使用的Python版本):docker run --rm -v "$PWD":/var/task public.ecr.aws/sam/build-python3.11 pip install -r requirements.txt -t python/lib/python3.11/site-packages/ - 将依赖目录打包为zip文件:
zip -r awswrangler-layer.zip python/ - 上传并创建Lambda层:
- 打开AWS Lambda控制台,左侧导航选择「层」,点击「创建层」
- 输入层名称(如
awswrangler-layer),上传刚才生成的zip包,选择匹配的Python运行时版本 - 点击「创建」完成层的创建
- 为Lambda函数关联层:
进入你的Lambda函数页面,在「层」模块点击「添加层」,选择刚创建的awswrangler层,保存配置即可。
方法二:在Amazon Linux 2实例上构建
如果无法使用Docker,可通过EC2模拟Lambda环境打包:
- 启动一台Amazon Linux 2的EC2实例,通过SSH连接
- 安装对应版本的Python和pip(以Python3.11为例):
sudo amazon-linux-extras install python3.11 pip3.11 install --upgrade pip - 创建符合Lambda层要求的目录结构:
mkdir -p python/lib/python3.11/site-packages - 安装awswrangler到该目录:
pip3.11 install awswrangler -t python/lib/python3.11/site-packages/ - 打包依赖目录:
zip -r awswrangler-layer.zip python/ - 将zip包下载到本地,后续上传创建层、关联Lambda函数的步骤同方法一。
注意事项
- 必须保证层的Python版本与你的Lambda函数运行时版本完全一致,否则会出现导入错误
- 若使用awswrangler的特定功能,需确认版本兼容性,建议指定稳定版本进行安装
内容的提问来源于stack exchange,提问作者VIJAY
相关产品推荐
相关产品推荐

