📜  无法导入模块“app”:在 lambda 中没有名为“requests”的模块 (1)

📅  最后修改于: 2023-12-03 15:40:07.639000             🧑  作者: Mango

无法导入模块“app”:在 lambda 中没有名为“requests”的模块

在 AWS Lambda 运行 Python 代码时,常常会遇到找不到模块的错误。这种错误通常意味着您需要在部署包中添加缺少的模块。例如,当您的 Lambda 函数需要使用 Python requests 库时,在部署包中需要包含该库。

在本例中,Lambda 函数无法导入“app”模块,因为该模块需要使用 requests。有两种方法可以解决此问题:

方法 1:在本地安装模块并打包部署包

您可以在本地使用 pip 安装 requests 模块,并将安装包中的完整内容打包到.zip 文件中。然后,上传.zip 文件到 Lambda 并更新代码以从该.zip 文件中导入 requests 模块。

以下命令可以帮助您安装 requests 并将其打包到.zip 文件中:

pip install requests -t ./
zip -r app.zip .

该命令将 requests 安装到当前目录的./ 目录中,并将完整项目打包到名为 app.zip 的.zip 文件中。

方法 2:使用 Lambda 的层

AWS Lambda 的层是一种在多个 Lambda 函数之间共享代码和库的方法。您可以将 requests 库制作为一个 Lambda 层,并将其与您的函数相关联。

以下命令可以帮助您创建一个 Lambda 层:

mkdir python
cd python
pip install requests -t .
zip -r requests-layer.zip .

该命令将 requests 安装到./ 目录中,并将完整项目打包到名为 requests-layer.zip 的.zip 文件中。

接下来,您可以使用 AWS CLI 命令将该层上传到 Lambda:

aws lambda publish-layer-version --layer-name requests --description "Python requests library" --zip-file fileb://requests-layer.zip

最后,在 Lambda 控制台上创建 Lambda 层并将其与您的函数相关联。

通过这两种方法之一,您应该能够成功导入缺少的 requests 模块,并在 Lambda 中使用该模块运行您的函数。