如何为 AWS Lambda 层安装Python包?
AWS Lambda 层是一个 zip 文件存档,其中包含运行 AWS Lambda函数所需的额外代码(库、依赖项或自定义运行时)或数据。然后,AWS Lambda函数可以以 lambda 层的形式提取所需的内容。当调用 AWS Lambda函数时,具有所有依赖项的层会在运行时与其一起加载。
为什么我们需要 lambda 层?
AWS Lambda函数在其运行时仅支持一些标准库。因此,当您必须在 lambda函数中使用外部库(例如 pandas)时,就会出现问题。在这种情况下,我们可以使用 lambda 层或部署包。但是与部署包相比,使用 lambda 层相当有用。
使用 lambda 层的优点
使用 AWS Lambda 层具有以下优势:
- 可重用性:一个 lambda 层可用于许多不同的 AWS Lambda 函数。
- 代码共享: Lambda 层使我们能够在各种 Lambda 函数之间共享通用代码或函数、库和依赖项。
- 使用 Lambda 层可帮助您专注于主要代码或业务逻辑。此外,它有助于使您的 Lambda函数代码更小。
- 使用 Lambda 层有助于减少部署包的大小。
- 如果需要更新您的公共代码或任何依赖项,您可以在一处完成,而不是在单个 lambda 函数中进行更改。
- 由于 lambda 层提供了存储不同版本的功能,您可以根据要求使用旧版本的包或新版本。
注意:一个 lambda函数最多可以有 5 层。在本教程中,我们将了解如何为 AWS Lambda 层安装Python包。请注意,无论您想将哪个Python包与 lambda 函数一起使用,以下步骤都是相同的。
在 AWS lambda 层中添加Python包的步骤
步骤 1:转到 AWS 管理控制台。
第二步:点击创建函数。
第 3 步:创建一个名为“mylambda”的 lambda函数
第 4 步:选择Python 3.9 和 x86_64 架构并点击创建函数
第 5 步:现在尝试在 lambda函数中导入 requests 模块。因此,通过单击测试按钮上的向下箭头创建一个名为“myevent”的事件。
第六步:部署函数。
现在点击测试。单击测试后,您将看到一条错误消息。
要创建 lambda 层,我们需要创建一个 zip 文件,其中包含“请求”包的所有依赖项并将其上传到我们的层。为了创建这个 zip 文件,我们将使用 docker。
为什么是码头工人?
由于 lambda 使用 Amazon Linux 环境,如果您使用 Windows 并创建依赖项的 zip 文件,则在运行 lambda函数时它可能无法正常工作。完成 docker 设置后,打开命令提示符并运行:
docker run -it ubuntu
标志“-it”用于打开交互式 shell。
注意:如果运行上述命令后出现错误,请检查您是否有 ubuntu 映像。要检查 docker 映像,请使用以下命令:
docker images
现在运行以下命令进行更新,安装所需的Python版本并安装 pip。
apt update
apt install python3.9
apt install python3-pip
由于我们之后还必须制作一个 zip 文件,所以安装 zip。
apt install zip
创建一个目录,我们要在其中安装我们的请求包。
mkdir -p layer/python/lib/python3.9/site-packages
这将创建一个名为:“layer”的文件夹。最后,使用以下命令安装 requests 包:
pip3 install requests -t layer/python/lib/python3.9/site-packages/
现在转到“图层”文件夹
cd layer
如果你执行 'ls',你会在这里看到一个名为Python的文件夹。
现在在 layer 目录中创建已安装包的 zip 文件夹。
zip -r mypackage.zip *
现在我们必须将 zip 文件 mypackage.zip 复制到我们的本地文件夹。
为此,请打开一个新的命令提示符并通过运行以下命令获取容器 ID:
docker ps -a
现在使用以下命令将 zip 文件从容器复制到本地文件夹。
格式:
docker cp
示例:
docker cp 7cdd497f0560:/layer/mypackage.zip C:\Users\lenovo\Desktop\layer
现在您将在您描述的路径中拥有一个“mypackage.zip”文件。
现在让我们创建一个 lambda 层。在控制台的左侧单击图层
单击创建图层按钮。
将您的图层命名为“mylayer”。请注意,您可以选择上传 zip 文件或从 amazon s3 上传文件。如果文件较大,则将它们上传到 s3 并提供 zip 文件的链接。
在本教程中,我们将直接将其作为 zip 文件上传。选择兼容架构为:x86_64。因为我们在创建 lambda函数时选择了相同的。并选择兼容的runtime为python3.9,上传zip文件,点击create。
将成功创建一个 lambda 层。现在我们只需要将它附加到我们的 lambda函数中。如果您是第一次创建层,您的版本号将反映为 1。(Lambda 层版本的值是不可变的,即每次创建新层时版本号增加 1)。
导航回 lambda函数。向下滚动到底部,然后单击添加图层(在图层部分下)。
单击自定义层并选择“mylayer”,选择版本并单击添加。
现在是测试它的时候了!点击测试。
您的 lambda函数现在将成功运行!
一些重要的点:
- 来自 lambda 层的解压缩文件将出现在 Lambda 运行时的 /opt 目录中。
- 您还可以使用 AWS Cloud9 环境而不是 docker 创建 zip 文件。