如何自动打包和部署AWS python lambda函数

问题描述 投票:0回答:1

我使用 kafka、numpy、boto3 等模块创建了一个 AWS python lambda。 AWS环境已经提供了Boto3。对于 Numpy,我使用 AWS 预定义层。 将其与 kafka 和其他模块一起部署为 .zip 文件后,大小约为 14 MB,AWS UI 不会显示代码“您的 Lambda 函数“ABC”的部署包太大,无法启用内联代码编辑。但是,您仍然可以调用你的函数。”

每当我做出任何改变时,我遵循的流程是-

  1. 导入所需的任何新模块
  2. pip 安装该模块到 .py 所在的现有目录
  3. 压缩目录
  4. 将 zip 上传到 s3
  5. 指示 lambda 使用 s3 中的最新 zip 文件

我认为这个过程很乏味,应该存在一种更简单、更好的方法,以便其他开发人员也应该能够轻松地贡献增强功能。 我还想了解如何将其提交到 git,这只是我需要提交的 .py 文件吗?如果是,那么我还应该提交requirements.txt,以便其他人可以轻松地在他们的环境中开始测试吗?我是否需要创建任何管道来使整个过程自动化并且对本地测试更加适合开发人员? 有没有任何工具可以使这个过程更加简单?请指导。

python amazon-web-services git aws-lambda deployment
1个回答
0
投票

对于 git 部分:我建议只检查您的主 python 文件和一组相关的requirements.txt 文件。

我用于更轻松地部署 Lambda 的两条路径是 Serverless 和 Terraform。我将简要概述它们(还有亚马逊的 CDK,但我不太熟悉)。

  • 无服务器基本上是亚马逊基础设施即代码工具(CloudFormation)的包装;定义您的 Lambda 和任何关联资源的一组 JSON 或 YAML。 这是一个很好的设置示例,即一个 git 跟踪的
    handler.py
    、一个
    requirements.txt
    文件和一个
    serverless.yml
    来部署 lambda。
  • 对于 Terraform,它是一种更通用的基础设施即代码工具,具有适用于每个主要云提供商的插件。我能找到的最好的例子是一个简化的仓库

Terraform 的主要优点是以更通用的方式进行更改跟踪,但如果您对其中任何一种都不熟悉,我认为无服务器会更简单。 (Serverless 使用 CloudFormation 堆栈来跟踪更改,这比 Terraform 的状态管理有点时髦)。

最理想;您希望在合并时在管道中运行这些东西,以便在代码审查后使用新的代码更改更新您的 lamda 并合并到 git 存储库中。它可能看起来像:

  1. 有人向您的 Git 存储库提交了 Pull 请求
  2. 请求已审核/合并
  3. 在之前/合并时,运行一些测试来验证代码
  4. 您运行 serverless/terraform 部署来更新 lambda
  5. 对新部署进行一些最终的端到端验证

如果您需要我澄清任何事情,请告诉我!

© www.soinside.com 2019 - 2024. All rights reserved.