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

标签 python amazon-web-services aws-lambda dockerfile amazon-ecr

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

  • 核心
  • 插件
  • lambda_handler.py

三者都处于同一级别 - /var/task

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

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

码头文件

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())

需求.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

关于python - AWS Lambda 函数无法在同一目录中找到其他包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71463799/

相关文章:

javascript - 亚马逊Echo开发: ways to set shouldEndSession

java - AWS Lambda - 在 Spring Boot 处理程序中注入(inject) Spring Bean

python - Lambda Python 查询 SSM 参数存储值

python - matplotlib子图网格: where to insert row/column arguments

amazon-web-services - AWS 云信息 : No change set if the CF's Referenced S3 files are changed

python:即使已经明确添加了路径也无法打开现有文件

amazon-web-services - 如何为 Elasticsearch 创建 AWS VPC 终端节点?

ruby-on-rails - SSH和S3存储桶之间的桥梁,用于文件传输

使用 AND 和 OR 的 Python 赋值

python - 展平列表列表中的内部列表