如何有效地处理lambda AWS和编译库?



我最近在使用运行环境中默认未安装的库集成 Lambda 函数时遇到了一些问题。因此,我遵循了 AWS 在其文档中解释的过程。文档说,默认情况下未安装的库应作为zip文件上传,并且这些库必须针对linux OS进行编译。

由于我在 Windows 上,因此我使用 WLS 生成了一个 zip 文件,其中包含我的 Lambda 函数所需的库。之后,zip 文件将上传到 S3 并链接到 Lambda 函数。

上述过程有效。但是,这不是一个可以轻松自动化的过程。自动化过程对于维护目的很重要。是否有自动化程序可以实现相同的目标?

您可以将依赖项提取到 Lambda 层中,如果您主 Lambda 不繁重,只需在 AWS 控制台中更新并测试它。此外,如本指南中所述,您可以使用 SAM 自动执行大多数部署步骤,并确保代码在 Lambda 环境中运行良好。

我们使用 jenkins 来创建包含 paramiko 以及其他非原生 python 包的构建,将它们压缩,然后将它们部署到 lambda。

我们有一个存储在工件工厂中的基本 zip,其中包含 paramkiko 包依赖项,以及一个包含我们在 lambda 中使用的主处理程序方法的基本/空白 function.py 文件。此 zip 是通过制作一个包含包名称/版本并运行 requirements.txt 文件并运行的: 点安装 -r 要求.txt -t .

这会将依赖项中的所有必要文件放入运行命令的目录中。然后你可以压缩该目录:zip -r9 ../lambda.zip * -x "bin/*" 要求.txt设置.cfg

您可以使用此基本 zip 自动创建使用相同包的多个 lambda - 您只需要在要使用的 lambda 函数文件中复制 jenkins。因此,每次运行 jenkins 作业来构建/更新 lambda 函数时,它都会下载我们在上一步中创建的基本 zip(如前所述,我们将其存储在 artifactory 中,但您可以将其存储在任何地方(,然后运行以下命令以使用新的 lambda 更新该 zip: 邮编 -g ../lambda.zip/path/tocheckedoutlambda/new_lambda_function.py

然后,Jenkins 使用 aws 插件上传到 aws。

这显然适用于 python,但您应该能够对其他语言使用类似的方法。

看: https://alexharv074.github.io/2018/08/18/creating-a-zip-file-for-an-aws-lambda-python-function.html

有关在python中为lambda制作zips的更多详细信息。

最新更新