AWS Lambda 函数无法在同一目录中找到其他包

AWS Lambda function not able to find other packages in same directory

我正在将 lambda 函数部署为容器映像。 这是我的项目结构:

三个都处于同一水平 - /var/task

在 lambda_handler.py 我正在导入核心包,但是当我在本地测试它时它说:

"errorMessage": "Unable to import module 'lambda_handler': No module named 'core'"

Docker 文件

FROM public.ecr.aws/lambda/python:3.9

# Copy requirements to container
COPY requirements.txt .

# install dependencies
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"

# Copy app folders to container
COPY core ${LAMBDA_TASK_ROOT}
COPY plugins ${LAMBDA_TASK_ROOT}
COPY lambda_handler.py ${LAMBDA_TASK_ROOT}
COPY __init__.py ${LAMBDA_TASK_ROOT}

CMD ["lambda_handler.lambda_fun"]

lambda_handler.py

import json

from core.nlp.service import nlp_service


def lambda_fun(event, context):
    return json.dumps(nlp_service.get_ner())

requirements.txt

pyspark==3.1.2
spacy
pymupdf
boto3
cloudpathlib
spark-nlp==3.4.1
numpy

如果你只是使用

COPY core ${LAMBDA_TASK_ROOT}

它将core的内容复制到${LAMBDA_TASK_ROOT}中。要复制到 core 文件夹,应该是:

COPY core ${LAMBDA_TASK_ROOT}/core