为何在AWS Lambda Docker容器中无法执行`from algorithm import foo`?
问题:Docker打包AWS Lambda镜像后无法导入自定义模块
algorithm 我按照AWS官方教程构建适用于Python 3.11的AWS Lambda函数Docker镜像。本地运行python lambda_function.py时,lambda_function.py第一行的from algorithm import foo as data_processor可正常执行,但打包为Docker镜像运行时,出现错误提示:Unable to import module 'lambda_function': No module named 'algorithm'。
本地测试Docker镜像的步骤:
# 启动Docker容器 docker run --platform linux/amd64 -p 9000:8080 my-image:latest # 打开另一个终端,触发Lambda函数 curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
我的目录结构:
. ├── Dockerfile ├── algorithm │ ├── __init__.py │ └── foo.py ├── lambda_function.py └── requirements.txt
Dockerfile内容:
FROM public.ecr.aws/lambda/python:3.11.2024.08.09.13 # 复制requirements.txt COPY requirements.txt ${LAMBDA_TASK_ROOT} RUN pip install --upgrade pip # 安装指定包 RUN pip install -r requirements.txt # 复制函数代码 COPY lambda_function.py ${LAMBDA_TASK_ROOT} COPY algorithm/ ${LAMBDA_TASK_ROOT} # 设置CMD指向lambda_handler(也可在Dockerfile外通过参数覆盖) CMD [ "lambda_function.lambda_handler" ]
我已确认${LAMBDA_TASK_ROOT}等于/var/task,且sys.path包含'/var/task'。尝试过类似问题的解决方案但无效,请问为何在Docker容器内的lambda_function.py中无法执行from algorithm import foo as data_processor?
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

