首页 > 解决方案 > Python 中的 AWS Lambda:来自父目录的处理程序

问题描述

我使用 Docker 作为具有以下结构的存储库的容器:

engine
--models_api
----alpha_model_api
--------model_api.py
----api_utils
--------utils.py
--models_logic
----models_utils
--------utils.py
----model_ids.json
--Dockerfile

model_api.api 是 lambda 处理程序。它使用 models_api.api_utils.utils 模块来获取一些数据。models_api.api_utils.utils 使用 models_logic.models_utils.utils 来提供从 models_logic.model_ids.json 反序列化的数据。问题是我不知道 api_utils 范围内的对象如何知道如何从工作目录 ( ${LAMBDA_TASK_ROOT}/models_api/alpha_model_api/model_api) 到 model_ids.json 而不假设它在特定目录中运行。

对我来说理想的情况是找到一种方法来调用model_api.api工作目录为 ${LAMBDA_TASK_ROOT} 的 aws lambda 处理程序 ()

这是码头文件:

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


COPY .  ${LAMBDA_TASK_ROOT}
ENV PYTHONPATH="$PYTHONPATH:${LAMBDA_TASK_ROOT}"

RUN pip install -r ./models_api/alpha_api/requirements.txt --target ./models_api/alpha_api

WORKDIR ${LAMBDA_TASK_ROOT}/models_api/alpha_api
CMD ["model_api.api"]

我希望能够在不设置WORKDIR变量的情况下调用 lambda 处理程序。甚至可能吗?

标签: pythonaws-lambdadockerfile

解决方案


推荐阅读