tom*_*tom 6 python amazon-web-services docker aws-lambda
我正在尝试构建一个在 AWS Lambda 上运行 Python 代码的 Docker 容器。构建工作正常,但是当我测试我的代码时,出现以下错误:
{"errorMessage": "Unable to import module 'function': No module named 'utils'", "errorType": "Runtime.ImportModuleError", "stackTrace": []}
Run Code Online (Sandbox Code Playgroud)
我的文件夹中基本上有两个 python 脚本,function.py 和 utils.py,我从 utils.py 导入一些函数并在 function.py 中使用它们。
在本地,一切正常,但是当我构建容器并使用以下curl命令对其进行测试时,出现上述错误。测试curl命令:
curl --request POST \
--url http://localhost:9000/2015-03-31/functions/function/invocations \
--header 'Content-Type: application/json' \
--data '{"Input": 4}'
Run Code Online (Sandbox Code Playgroud)
这是我的 dockerfile:
FROM public.ecr.aws/lambda/python:3.7
WORKDIR /
COPY . .
COPY function.py ${LAMBDA_TASK_ROOT}
COPY requirements.txt .
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
CMD [ "function.lambda_handler" ]
Run Code Online (Sandbox Code Playgroud)
我在相关的Stackoverflow问题中读到的是尝试以另一种方式从utils.py导入函数,我尝试更改为from utils import *
,from .utils import all
我更改了Dockerfile中的WORKDIR,并将utils文件放在单独的utils文件夹中并尝试导入这边走:from utils.utils import *
。我还尝试过在 Python 3.8 中运行代码。
这是我的文件夹结构:这是我的文件夹结构
有谁知道我做错了什么?
Dockerfile 语句COPY . .
将所有文件复制到工作目录,给定您之前的WORKDIR
, 是/
.
要解决Python导入问题,您需要将Python模块移动到正确的目录:
COPY utils.py ${LAMBDA_TASK_ROOT}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2467 次 |
最近记录: |