让 sam 忽略 requirements.txt
make sam to IGNORE requirements.txt
所以我正在使用 AWS SAM 构建一些功能并将其部署到 AWS Lambda。
因为我的连接速度慢,上传功能很慢,所以我决定在里面创建一个有需求的层。所以下次我尝试部署功能时,我将不必上传所有 50 MB 的需求,我可以只使用已经上传的层。
问题是我找不到任何参数可以让我忽略需求文件并部署源代码。
有可能吗?
希望我能正确理解你的问题,但如果你想部署没有任何依赖项的 lambda,你可以尝试两种方法:
- 不是 运行
sam build
在 运行 sam deploy
之前
- 有一个空的 requirements.txt 文件。然后
sam build
根本不包含该 lambda 函数的任何依赖项。
当然这里我假设该层已经存在于 AWS 中并且不包含在同一模板中。如果它们在同一模板中定义,则必须将它们分成两个堆栈。一个带有可以部署一次的层,一个带有引用该层的 lambda。
不幸的是,据我所知,sam build
没有可以忽略的标志 requirements.txt,因为该命令的核心目的是构建依赖关系。
对于每个使用图像容器的人来说,这是我找到的解决方案。它极大地改善了工作流程。
Dockerfile [如果requirments.txt不变则跳过]
FROM public.ecr.aws/lambda/python:3.8 AS build
COPY requirements.txt ./
RUN python3.8 -m pip install -r requirements.txt -t .
COPY app.py ./
COPY model /opt/ml/model
CMD ["app.lambda_handler"]
我改变了什么?
这是默认的 Dockerfile
FROM public.ecr.aws/lambda/python:3.8
COPY app.py requirements.txt ./
COPY model /opt/ml/model
RUN python3.8 -m pip install -r requirements.txt -t .
CMD ["app.lambda_handler"]
此解决方案基于
所以我正在使用 AWS SAM 构建一些功能并将其部署到 AWS Lambda。 因为我的连接速度慢,上传功能很慢,所以我决定在里面创建一个有需求的层。所以下次我尝试部署功能时,我将不必上传所有 50 MB 的需求,我可以只使用已经上传的层。
问题是我找不到任何参数可以让我忽略需求文件并部署源代码。
有可能吗?
希望我能正确理解你的问题,但如果你想部署没有任何依赖项的 lambda,你可以尝试两种方法:
- 不是 运行
sam build
在 运行sam deploy
之前
- 有一个空的 requirements.txt 文件。然后
sam build
根本不包含该 lambda 函数的任何依赖项。
当然这里我假设该层已经存在于 AWS 中并且不包含在同一模板中。如果它们在同一模板中定义,则必须将它们分成两个堆栈。一个带有可以部署一次的层,一个带有引用该层的 lambda。
不幸的是,据我所知,sam build
没有可以忽略的标志 requirements.txt,因为该命令的核心目的是构建依赖关系。
对于每个使用图像容器的人来说,这是我找到的解决方案。它极大地改善了工作流程。
Dockerfile [如果requirments.txt不变则跳过]
FROM public.ecr.aws/lambda/python:3.8 AS build
COPY requirements.txt ./
RUN python3.8 -m pip install -r requirements.txt -t .
COPY app.py ./
COPY model /opt/ml/model
CMD ["app.lambda_handler"]
我改变了什么?
这是默认的 Dockerfile
FROM public.ecr.aws/lambda/python:3.8
COPY app.py requirements.txt ./
COPY model /opt/ml/model
RUN python3.8 -m pip install -r requirements.txt -t .
CMD ["app.lambda_handler"]
此解决方案基于