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

AWS Lambda部署Docker镜像时utils模块导入失败求助

解决AWS Lambda Docker镜像中找不到utils模块的问题

核心问题分析

出现No module named 'utils'错误,通常是以下两个原因:

  1. Docker镜像中代码的目录结构不符合Lambda运行时的要求;
  2. Python包识别所需的__init__.py文件存在命名错误。

具体解决方案

1. 修正Dockerfile的文件复制逻辑

Lambda运行时默认从/var/task目录加载代码,你的Dockerfile必须确保所有代码(包括utils文件夹)被正确复制到这个目录。修改后的Dockerfile示例:

# 使用AWS官方Lambda Python基础镜像
FROM public.ecr.aws/lambda/python:3.11

# 复制依赖文件并安装到Lambda任务根目录
COPY requirements.txt ${LAMBDA_TASK_ROOT}/
RUN pip install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"

# 复制当前目录下所有文件(包括utils文件夹)到Lambda任务根目录
COPY . ${LAMBDA_TASK_ROOT}/

# 指定Lambda入口函数
CMD ["lambda_function.lambda_handler"]

关键是COPY . ${LAMBDA_TASK_ROOT}/这一步,它会把你的Lambda文件夹下的所有内容(包括lambda_function.py和utils)完整复制到/var/task,保证两者处于同一层级。

2. 修复__init__.py文件名错误

你的目录中__init_.py少了一个下划线,正确的文件名应该是__init__.py(开头和结尾各两个下划线):

  • 在Lambda根目录下创建/修正为__init__.py(空文件即可);
  • 在utils文件夹下也创建一个空的__init__.py,让Python识别utils为合法的包。

3. 保持绝对导入方式

无需使用相对导入(.utils),保持原有的绝对导入语句即可:

from utils.textarct_ocr_facturas import Textract
from utils.clasificador_doc import clasificadorDoc2S3
from utils.sendDatabase import postgreSQLDatabase
from utils.openai_qr import OpenAIStrucured

只要代码结构正确,Lambda运行时的Python路径会自动包含/var/task,能正常识别utils模块。

4. 本地验证镜像结构(可选)

构建镜像后,可本地进入容器检查文件结构是否正确:

# 构建镜像
docker build -t lambda-ocr .

# 进入容器bash
docker run -it --entrypoint bash lambda-ocr

# 查看/var/task目录内容
ls /var/task

确认输出中包含lambda_function.py和utils文件夹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:02:52