gpt4 book ai didi

amazon-web-services - AWS Lambda - 什么是在 CI/CD 管道中对 lambda 进行版本控制和提升的最佳实践

转载 作者:行者123 更新时间:2023-12-05 06:11:06 25 4
gpt4 key购买 nike

我是 AWS Lambda 的新手,想了解对 lambda 进行版本控制并将其提升到 CI/CD 管道中更高环境的最佳实践。

举个例子,让我们进行以下假设:

  • 我有 3 个环境:dev/ci/prod
  • 我在一个 Git 存储库中有多个 lambda(共享一些公共(public)代码)

我看到的过程如下:

  • 共享代码将被打包在单独的层中
  • 每个 lambda 都将单独打包,并重新使用共享层

现在,回到 CI 过程,我需要一些方法来区分一组 lambdas/层与一个环境。给另一个。

我的第一个假设是为此目的利用标签:

"Environment=Dev"
"Environment=CI"
"Environment=Prod"

用于区分在不同环境中使用的相同 lambda 的标签。不幸的是,如果我是对的,就没有办法让多个 lambda 具有相同的名称(即使标签不同)?

下一个想法是根据环境保留不同名称的 lambda 函数。例如:

mylambda-dev-<DEV_NAME>-<SPECIFIC_BRANCH_NAME> # where <DEV_NAME> is used to differentiate between dev env. for multiple developers
mylambda-ci-<INTEGRATION_BRANCH_NAME>
mylambda-prod
  • 在开发过程中,开发人员将运行 CI 作业来创建/更新 mylambda-dev-<DEV_NAME>-<SPECIFIC_BRANCH_NAME>
  • 当集成处于良好状态时(并将代码合并到集成分支),将有一个 CI 作业将创建/更新 mylambda-ci-<INTEGRATION_BRANCH_NAME>
  • 最后,当我们准备好在生产中发布时,将有一个 CI 作业会创建 mylambda-prod具有特定版本(1、2、3 ....)以使发布的 lambda 不可变。此外,将创建一个别名以指向生产中的特定版本。此别名会将数字版本映射到对项目更有意义的内容,例如:<PROJECT_NAME>_v1.0.0

层也将应用相同的过程。

这些是我对这个话题的初步想法。如果能提供涵盖该主题的最佳实践的任何帮助/指导/经验,那将是极好的。

谢谢。

最佳答案

Lambda推广我们关注的是

  1. 每个lambda都有-{{环境}}比如my-lambda-dev, my-lambda-stage, my-lambda-prod

  2. 每个 lambda 都有“Smoke”和“Live”别名。

当我们执行 CI/CD 作业时,请按照以下步骤操作

在环境列表上循环(例如 dev-> stage -> prod)

2.1 在当前工作环境(例如 5.1.0)上为“实时”版本备份绿色构建

2.2 部署到当前工作环境并且仅使用“Smoke”别名

2.3 对“Smoke”别名执行测试用例

2.4 如果测试用例全部通过,则应用到Live alias,然后继续循环(意味着继续升级到更高的环境)

2.5 如果有任何失败,回滚到当前环境及以下环境的 2.1 备份版本。之后打破循环

注意:确保所有源事件,使用 Live 版本,而不是 Smoke 版本。

谢谢,

关于amazon-web-services - AWS Lambda - 什么是在 CI/CD 管道中对 lambda 进行版本控制和提升的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64119860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com