【发布时间】: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