我是AWS Lambda的新手,想检查对lambda进行版本控制并将其提升到CI / CD管道中更高环境的最佳实践。
作为一个例子,让我们遵循以下假设:
我看到以下过程:
现在,回到CI流程,我需要一些方法来区分一个环境中的一组lambda /层。到另一个。
我的第一个假设是为此目的利用标签:
"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
mylambda-dev-<DEV_NAME>-<SPECIFIC_BRANCH_NAME>
mylambda-ci-<INTEGRATION_BRANCH_NAME>
mylambda-prod
,以使发布的lambda不可变。另外,将创建别名以指向生产中的特定版本。此别名会将数字版本映射到对项目更有意义的内容,例如:<PROJECT_NAME>_v1.0.0
相同的过程也将应用于图层。
这些是我对该主题的初步想法。任何有助于实现覆盖此主题的最佳实践的帮助/指导/经验都将很棒。
谢谢。
答案 0 :(得分:1)
我们遵循的Lambda促销活动是
每个lambda都具有-{{环境}},例如my-lambda-dev,my-lambda-stage,my-lambda-prod
每个lambda都有“ Smoke”和“ Live”别名。
当我们执行CI / CD作业时,请按照以下步骤操作
循环查看环境列表(例如dev-> stage-> prod)
2.1在当前的工作环境(如5.1.0)上为“ Live”版本备份绿色版本
2.2部署到当前工作环境,并且仅使用'Smoke'别名
2.3在“烟雾”别名下执行测试用例
2.4如果所有测试用例都通过了,请将其应用到Live别名,然后继续循环(这意味着继续升级到更高的环境)
2.5如果有任何失败,请回滚到针对当前环境及以下环境以2.1备份的版本。在那之后打破循环
注意:请确保所有源事件都使用实时版本,而不是Smoke版本。
谢谢