【问题标题】:aws-sam-cli Python requirements.txt missing from deployed Lambda when custom template.yaml自定义 template.yaml 时,部署的 Lambda 中缺少 aws-sam-cli Python requirements.txt
【发布时间】:2021-10-22 01:47:31
【问题描述】:

我有几个 AWS SAM 模板用于同一个项目,其中 lambdas 使用 Python 3.8,部分用于不同的环境,部分用于尝试新事物,我使用 -t my-template.yaml 指定要使用的模板。

我使用常规的sam build -t my-template.yaml && sam deploy -t my-template.yaml 构建。

问题:在构建步骤中似乎尊重 requirements.txt 文件似乎被部署步骤忽略了。

.aws-sam/build/MyFunction 包含要求:

$ ls
app.py   
certifi-2020.12.5.dist-info  
chardet-4.0.0.dist-info  
idna-2.10.dist-info  
pymysql                  
rds_config.py  
requests-2.25.1.dist-info  
urllib3
certifi  
chardet                      
idna                     
__init__.py          
PyMySQL-1.0.2.dist-info  
requests       
requirements.txt           
urllib3-1.26.3.dist-info

但是在云中运行时,lambda 失败并出现异常,提示找不到 pymysql,当我在 AWS UI 中检查该函数时,没有包含任何要求(例如,没有 PyMySQL-1.0.2.dist -信息)。

我注意到,如果我不使用 sam deploy 上的 -t 标志,而只在其中使用默认的 template.yaml 文件,那么似乎包含正确的要求,并且 lambda 成功运行。

我可能做错了什么?

requirements.txt 内容:

$ cat requirements.txt
requests
pymysql

SAM 版本:

$ sam --version
SAM CLI, version 1.18.1

操作系统:

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
....

【问题讨论】:

    标签: python amazon-web-services aws-lambda aws-sam-cli


    【解决方案1】:

    解决方案是使用:

    sam build -t my-template.yaml
    

    然后做:

    sam deploy
    

    不再添加-t my-template.yaml

    从下面的票中回答:

    您正在做的是告诉sam deploy 使用指向非构建函数的“源模板”。相反,如果您从sam deploy 命令中删除-t,SAM CLI 将从.aws-sam/build/template.yaml 获取构建的模板,该模板将“安装”所有依赖项。

    https://github.com/aws/serverless-application-model/issues/1927

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 2021-11-15
      • 1970-01-01
      • 2020-10-08
      • 2020-10-23
      • 2013-09-05
      相关资源
      最近更新 更多