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

此解决方案基于