构建AWS Lambda Python3.8镜像执行docker build报gcc不存在错误如何解决
报错根因
你本地macOS安装的gcc不会被Docker构建过程调用,这个报错是Lambda基础镜像内部没有安装gcc编译工具链导致的,和本地环境无关。
方案1:修复Docker构建报错
在你的Dockerfile中安装Python依赖的步骤之前,先添加安装编译工具的指令,参考配置如下:
# 基于官方Lambda Python3.8基础镜像 FROM public.ecr.aws/lambda/python:3.8 # 先安装编译所需的系统依赖 RUN yum install -y gcc gcc-c++ make python3-devel # 复制依赖文件并安装 COPY requirements.txt ./ RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}" # 复制函数代码 COPY app.py ./ # 设置入口 CMD ["app.lambda_handler"]
按照上述配置修改后重新执行构建命令,不会再报找不到gcc的错误,构建完成后正常推送到ECR即可给Lambda使用。
方案2:无需Docker的cytoolz导入方案
你可以直接使用适配Lambda Python3.8运行时的预编译二进制包,不需要自己编译:
- 直接在亚马逊云科技提供的Serverless Application Repository中搜索预构建的cytoolz Lambda层,直接绑定到你的函数即可
- 或者在x86_64架构的Amazon Linux 2环境下执行
pip install cytoolz -t python/lib/python3.8/site-packages,将生成的目录打包为zip上传为自定义Lambda层,绑定到函数就能直接导入使用
内容的提问来源于stack exchange,提问作者BigCousin
相关产品推荐
相关产品推荐

