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

Docker容器中Makefile构建Python Zip包异常,Lambda报模块缺失错误

问题原因

你遇到的_rust.abi3.so找不到的错误,核心原因是Docker容器的系统环境和AWS Lambda的运行环境不匹配:

  • Lambda运行在基于Amazon Linux的环境中,而你用的Docker容器大概率是Debian/Ubuntu这类发行版,两者的系统库、二进制编译标准存在差异
  • 在Docker里用pip安装依赖时,会针对当前容器的系统编译二进制文件(比如cryptography的Rust绑定库),这些文件拿到Lambda环境里无法被加载
  • GitLab流水线能正常工作,说明它的执行环境和Lambda的架构/系统更兼容
修复方案

1. 换用Lambda兼容的Docker基础镜像

直接用Amazon Linux 2或2023作为Docker的基础镜像,确保依赖安装环境和Lambda完全一致:

# 示例Dockerfile内容
FROM amazonlinux:2023
RUN yum install -y python3 zip
# 之后执行你的Makefile构建命令

2. 强制pip下载兼容Lambda的预编译包

如果不想换镜像,在pip安装时指定目标平台为Linux x86_64,并强制使用manylinux标准的预编译包,避免本地编译不兼容的二进制:
修改Makefile里的pip安装命令:

pip install . --target=dependencies --platform manylinux_x86_64 --only-binary=:all: --upgrade

3. 确保Zip包目录结构正确

打包后的Zip包,依赖包和你的业务代码要在同一层级(比如cryptography/和common/都在Zip根目录),可以打包后验证:

unzip -l provisioner/snp.zip | head -20

确认cryptography/hazmat/bindings/_rust.abi3.so存在于正确路径下。

4. 构建前清理旧依赖

每次构建前删掉旧的dependencies目录和Zip包,避免残留之前的不兼容文件:
修改Makefile的build_and_deploy目标:

build_and_deploy : 
    apt-get update && apt-get install zip -y; \
    python -m pip install --upgrade pip; \
    cd provisioner && rm -rf dependencies snp.zip; \  # 新增清理步骤
    pip install . --target=dependencies --platform manylinux_x86_64 --only-binary=:all:; \
    cd dependencies && zip -r ../snp.zip . && cd .. && cd src && zip -r ../snp.zip . && cd .. && cd .. ; \
    # 后续Terraform命令保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:53:39