使用public.ecr.aws/lambda/python:3.7构建Lambda容器包安装失败求助
解决AWS Lambda Python 3.7镜像中安装依赖包的问题
你遇到的问题根源是选了错误的包管理工具:public.ecr.aws/lambda/python:3.7 基于Amazon Linux 2系统,只能用yum作为包管理工具,apt(Debian/Ubuntu)和apk(Alpine)都不适用。而之前yum报错是因为镜像默认仓库配置在离线构建时可能无法正常访问,且目标包不在默认基础仓库中。
修正后的Dockerfile
FROM public.ecr.aws/lambda/python:3.7 # 复制配置文件与代码 COPY policy.xml /etc/ImageMagick-6 COPY . . # 启用EPEL仓库(用于获取希伯来语Tesseract包) RUN amazon-linux-extras enable epel # 清理旧缓存并安装系统依赖 RUN yum clean all && \ yum makecache fast && \ yum install -y tesseract-ocr-heb ghostscript && \ yum clean all # 清理缓存减小镜像体积 # 安装Python依赖 RUN pip install -r requirements.txt # Lambda启动命令 CMD ["app.lambda_handler"]
关键说明
- 启用EPEL仓库:
tesseract-ocr-heb不在Amazon Linux 2的默认基础仓库中,需要通过EPEL(Extra Packages for Enterprise Linux)仓库获取,因此先执行amazon-linux-extras enable epel。 - 缓存处理:每次
yum操作前后清理缓存,既解决“缓存数据不足”的报错,也能避免镜像体积过大。 - 移除无用指令:Lambda容器无需
EXPOSE 80,因为Lambda通过事件触发而非端口监听,该指令可直接删除。
如果构建时仍遇到仓库访问问题,可添加--network=host参数确保容器能正常访问外部仓库:
docker build --network=host -t lambda-image .
内容的提问来源于stack exchange,提问作者Orit Barzilay
相关产品推荐
相关产品推荐

