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

AWS Lambda Python 3.7运行时无法识别自定义依赖层问题咨询

问题根因

导致模块无法识别的核心原因有3个,按出现概率从高到低排序:

  1. Lambda Python层目录结构不符合要求:AWS Lambda Python运行时只会将层解压后的/opt/python目录加入模块搜索路径,你当前的打包方式是直接把依赖放在zip包根目录,解压后依赖会落到/opt/下,运行时自然找不到模块。
  2. 基础镜像与运行时版本不匹配:你使用的amazonlinux:latest当前为Amazon Linux 2023,默认Python版本远高于3.7,编译出的二进制依赖和Lambda Python 3.7运行时不兼容。
  3. 文件权限问题:root身份安装的依赖如果没有设置全局可读权限,Lambda的执行用户没有读取权限也会触发导入错误,不过这是小概率问题。

注:仅用root身份执行pip安装本身不会直接导致该问题,只要依赖文件权限配置正确即可正常使用。

修复方案
  • 调整打包目录结构:pip安装依赖时要放到名为python的子目录下,再对该目录打包,确保zip解压后结构为python/[依赖包文件]
  • 替换基础镜像为和Lambda Python 3.7运行时完全兼容的amazonlinux:2,避免系统版本差异导致的兼容问题
  • 显式调用Python 3.7对应的pip安装依赖,避免错用其他Python版本的pip导致包版本不匹配
  • 打包前统一设置依赖文件权限为所有用户可读,消除权限隐患
修改后的Makefile示例
create-lambda-layer:
    docker run -dit --name AL amazonlinux:2
    docker cp requirements.in AL:/root/requirements.in
    docker exec -it AL bash -c "yum update -y \
        && amazon-linux-extras install python3.7 -y \
        && yum install -y zip  \
        && python3.7 -m pip install --upgrade pip wheel \
        && mkdir -p /root/layer/python \
        && python3.7 -m pip install -r /root/requirements.in -t /root/layer/python --no-cache-dir \
        && cd /root/layer/ \
        && chmod -R 755 python/ \
        && zip -r python.zip python/"
    docker cp AL:/root/layer/python.zip .
    docker stop AL
    docker rm -f AL
验证方法

生成zip包后执行unzip -l python.zip查看结构,正确的输出应该类似:

python/
python/gitlab/
python/holidays/
python/...其他依赖文件

如果部署后仍有问题,可以在Lambda代码中加入以下代码打印模块搜索路径排查:

import sys
print(sys.path)

正常输出中必然包含/opt/python路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:24:04