使用 Docker 创建 Python AWS Lambda 层

本文介绍了如何利用Docker创建AWS Lambda层,以包含Flask等外部依赖。详细阐述了设置Lambda层目录、使用Docker安装需求、创建ZIP文件并上传到AWS的步骤,并提供了简化部署的bash脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我知道 Python 基础知识的封面图片,下一步是什么?

 

默认情况下,您的 AWS Lambda 函数仅包含核心 Python 功能。Lambda 层是一项很棒的功能,可让您向 Lambda 函数添​​加外部依赖项。在这篇文章中,我将向您介绍如何使用 Docker 创建自己的 Lambda 层库。

什么是 Lambda 层?

如果您不熟悉 Lambda 层,层是您可以在运行时包含在 Lambda 函数中的附加代码,用于将外部库合并到您的 Lambda 函数中。默认情况下,Lambda 函数仅包含核心 Python 库。层是您将其他外部库包含到您的 Lambda 函数中的一种方式。层的一个有用特性是它们存在于 Lambda 函数本身之外。创建层后,您可以在所有 Lambda 函数中使用该层。您可以从 AWS 文档中阅读有关层的更多信息。

使用 Docker 创建 Lambda 层

在这篇文章中,我们将以 Flask 为例创建一个层。使用 Docket 创建 Lambda 层有四个主要步骤:

  1. 设置图层的本地目录
  2. 使用 Docker 安装层包
  3. 创建目录的 zip 文件
  4. 使用 AWS CLI 上传到 AWS

接下来的几节将更详细地描述这些步骤中的每一个。最后一节将展示如何将这些步骤组合到一个 bash 脚本中,以使部署更加容易。

设置图层目录

第一步是构建将包含我们层的所有工件的本地目录结构。在终端中输入以下命令。将创建一个名为的新目录flask-layer以及一个子目录python/lib.python3.8/site-packages,我们将在其中安装 Python 包。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>mkdir flask-layer
cd flask-layer
mkdir -pv python/lib/python3.8/site-packages
</code></span></span>

如果您想为多个 Python 版本创建图层,您可以重复最后一个命令并将“python3.8”更改为您想要包含的任何其他 Python 版本。

flask-layer目录中创建一个requirements.txt包含以下内容的文件。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>flask==1.1.1
</code></span></span>

requirements.txt文件定义将包含在您的层中的包。如果您想在图层中包含其他依赖项,则可以将它们添加到此requirements.txt文件中。

层需要注意的一件事是,当它们被加载到您的 Lambda 函数中时,它们的大小不能超过 250MB。一个 Lambda 函数最多可以包含 5 个不同的层。考虑到这些限制,最好有更小的层,你可以在你的函数中混合和匹配,而不是构建大型的、单一用途的层。

使用 Docker 安装需求

Docker 将安装您在requirements.txt. Docker 具有复制 AWS Lambda 环境的图像。使用这些图像 Docker 将安装您在其中指定的requirements.txt与 Lambda 运行时兼容的库。在终端中输入以下代码。在输入此命令之前,请确保您已运行 Docker!

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>docker run -v "$PWD":/var/task "lambci/lambda:build-python3.8" /bin/sh -c "pip install -r requirements.txt -t python/lib/python3.8/site-packages/; exit"
</code
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值