簡體   English   中英

使用 Python 為 AWS Lambda 構建 Docker 容器時出現導入模塊錯誤

[英]Import Module Error when building a Docker Container with Python for AWS Lambda

我正在嘗試構建一個在 AWS Lambda 上運行 Python 代碼的 Docker 容器。 構建工作正常,但是當我測試我的代碼時,我收到以下錯誤:

{"errorMessage": "Unable to import module 'function': No module named 'utils'", "errorType": "Runtime.ImportModuleError", "stackTrace": []}

我的文件夾中基本上有兩個 python 腳本,function.py 和 utils.py,我從 utils.py 中導入一些函數並在 function.py 中使用它們。

在本地,一切正常,但是當我構建容器並使用以下 curl 命令對其進行測試時,出現上述錯誤。 測試卷曲命令:

curl --request POST \
  --url http://localhost:9000/2015-03-31/functions/function/invocations \
  --header 'Content-Type: application/json' \
  --data '{"Input": 4}'

這是我的碼頭文件:

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" ]

我在相關的 Stackoverflow 問題中讀到的是嘗試以另一種方式從 utils.py 導入函數,我嘗試from utils import *更改為from .utils import all ,我在我的 Dockerfile 中更改了 WORKDIR,然后我把 utils將文件放在單獨的 utils 文件夾中並嘗試以這種方式導入: from utils.utils import * 我也嘗試過在 Python 3.8 中運行代碼。

這是我的文件夾結構:這是我的文件夾結構

有誰知道我做錯了什么?

Dockerfile 語句COPY . . COPY . . 將所有文件復制到工作目錄,給定您之前的WORKDIR ,是/

要解決 Python 導入問題,您需要將 Python 模塊移動到正確的目錄:

COPY utils.py ${LAMBDA_TASK_ROOT}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM