📜  如何为 AWS Lambda 层安装Python包?

📅  最后修改于: 2022-05-13 01:56:16.753000             🧑  作者: Mango

如何为 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 架构并点击创建函数

选择 Python-3.9 和 x86_64 架构

第 5 步:现在尝试在 lambda函数中导入 requests 模块。因此,通过单击测试按钮上的向下箭头创建一个名为“myevent”的事件。

选择-配置-测试-事件创建一个名为 myevent 的事件

第六步:部署函数。

部署功能

现在点击测试。单击测试后,您将看到一条错误消息。

获取错误消息

要创建 lambda 层,我们需要创建一个 zip 文件,其中包含“请求”包的所有依赖项并将其上传到我们的层。为了创建这个 zip 文件,我们将使用 docker。

为什么是码头工人?

由于 lambda 使用 Amazon Linux 环境,如果您使用 Windows 并创建依赖项的 zip 文件,则在运行 lambda函数时它可能无法正常工作。完成 docker 设置后,打开命令提示符并运行:

标志“-it”用于打开交互式 shell。

注意:如果运行上述命令后出现错误,请检查您是否有 ubuntu 映像。要检查 docker 映像,请使用以下命令:

现在运行以下命令进行更新,安装所需的Python版本并安装 pip。

更新-ubuntu

由于我们之后还必须制作一个 zip 文件,所以安装 zip。

创建一个目录,我们要在其中安装我们的请求包。

创建目录

这将创建一个名为:“layer”的文件夹。最后,使用以下命令安装 requests 包:

安装请求包

现在转到“图层”文件夹

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”文件。

获取 mypackage.zip 文件

现在让我们创建一个 lambda 层。在控制台的左侧单击图层

创建一个 lambda 层

单击创建图层按钮。

单击创建图层按钮

将您的图层命名为“mylayer”。请注意,您可以选择上传 zip 文件或从 amazon s3 上传文件。如果文件较大,则将它们上传到 s3 并提供 zip 文件的链接。

单击从 Amazon-S3 上传文件

在本教程中,我们将直接将其作为 zip 文件上传。选择兼容架构为:x86_64。因为我们在创建 lambda函数时选择了相同的。并选择兼容的runtime为python3.9,上传zip文件,点击create。

点击创建

将成功创建一个 lambda 层。现在我们只需要将它附加到我们的 lambda函数中。如果您是第一次创建层,您的版本号将反映为 1。(Lambda 层版本的值是不可变的,即每次创建新层时版本号增加 1)。

导航回 lambda函数。向下滚动到底部,然后单击添加图层(在图层部分下)。

点击添加图层

单击自定义层并选择“mylayer”,选择版本并单击添加。

点击添加按钮

现在是测试它的时候了!点击测试。

点击测试按钮

您的 lambda函数现在将成功运行!

一些重要的点:

  • 来自 lambda 层的解压缩文件将出现在 Lambda 运行时的 /opt 目录中。
  • 您还可以使用 AWS Cloud9 环境而不是 docker 创建 zip 文件。