【问题标题】:git version control lambda functionsgit 版本控制 lambda 函数
【发布时间】:2018-08-03 17:50:29
【问题描述】:

为了让开发人员能够在本地编写他们的 lambda 函数,然后提交并推送到 git,我们使用了 SAM 和 SAM Local。

我们有大约 50 个 lambda 函数,预计这个数字会增长到数百甚至数千。

我想知道如何对 lambda 函数存储库进行分组,即 我们是否应该将所有由 api 网关触发的 lambda 函数分组到它们自己的仓库中,然后将所有由 s3 分别触发的函数分组等等...

挑战在于一些 lambda 函数有自己的依赖项,尝试在同一个 repo 中拥有多个具有不同依赖项的 lambdas 看起来很奇怪。 一个 lambda 可能有 npm 包依赖项,另一个可能有 python 库依赖项,等等......我也是git commit 和 git push 这两个 lambda 在他们自己单独的仓库中或将它们组织在单独的文件夹中并将它们推送到同一个仓库? 或者每个 lambda 函数都有单独的 repos?

将每个 lambda 提交到自己的 repo 似乎并不可行,尤其是随着这些函数的数量随着时间的推移而增加。

我是 aws 工具的新手,希望有人对此提出见解!

也许你以前遇到过这个问题?

【问题讨论】:

  • 这 50 个 lambda 函数有什么共同点?
  • 没有太多共同点;他们中的大多数人都在做一次性的任务;只有 api 网关功能被分组在同一个 repo 中,但其余的不依赖于 api;它们由 SNS 触发,其他由 kinesis 触发,其他由 S3 存储桶触发。我不喜欢每个函数有一个 git repo 的想法,因为加班是不可持续的!

标签: amazon-web-services amazon-s3 aws-lambda aws-sdk aws-api-gateway


【解决方案1】:

我会根据他们的目的对他们进行分组。例如,

  • REST API(HTTP 端点)
  • GraphQL API(HTTP 端点)
  • 身份验证 API(HTTP 端点)
  • Admin API(HTTP 端点不是我们面向用户的产品的一部分,但对于管理我们的客户(例如计费系统和公司仪表板)至关重要)
  • 后台工作人员(用于处理后台任务,例如调整图像大小、发送电子邮件、聚合数据等)
  • 操作(不直接属于产品,但在日常操作中必不可少,例如 Slack WebHook、CI/CD 触发器)

我还建议使用 serverless-framework 等工具来帮助管理每个项目。

【讨论】:

  • 感谢您的回复;当您说要将它们分组时,您的意思是将它们分组在同一个 git 存储库中?到目前为止,我使用 SAM 模板将所有 API Gateway lambda 分组在同一个 repo 中。但是假设您有两个 lambda 函数:一个用于使用 npm 包依赖项调整图像大小,另一个用于发送具有 python 依赖项的电子邮件。你会在同一个 repo 中检查这两个函数吗?每个函数都有自己的 SAM 模板文件监听开发分支!当该分支签入时,2 个 SAM 模板中的哪一个会触发构建?
  • 是的,我将它们分组为一组 = 一个存储库 = 一个构建/部署管道。
  • 因此,如果我只更改一组十个函数中的一个函数,那么即使其他函数没有更改,所有十个函数也会一起部署(尽管我认为serverless 正在为此做一些事情)。当您只更改一个时部署所有十个有点过分,但这对我来说比为 100 个功能管理 100 个不同的部署管道更理智。
  • 是的,谢谢你;这就是为什么我对正确的过程感到有点不舒服/不确定的原因。我曾考虑将每个函数放在同一个 repo 中自己单独的分支上,但它会破坏 git 的目的,即最终将分支合并到 master 并且你不想合并这些分支,因为对我来说,要点创建分支是尝试分离我的功能,同时减少创建的存储库数量。我仍在考虑想法,我会在此更新。我的 sprint 还剩几天时间来为生产目的想出一些可靠的东西。
  • @pelican 我还考虑了每个函数在其自己的分支中的可能性 - 但是我同意这击败了 git 并且是 hacky。如果你不介意我问,你最终是怎么做的?我也有一个问题,我希望这些多个 Lambda 共享一个公共 API 网关——不太确定最好的 CI 流程是什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
  • 2023-04-04
  • 2011-07-29
  • 2012-05-31
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多