简单解释我当前的基础架构:我使用的是AWS Lambdas (在那里运行python代码),它是通过Gitlab CI使用无服务器框架部署的。
情况说明:我目前有一个AWS Lambda,它使用一个特定的库版本(目前是1.x.x版)。在某个时刻,这个Lambda将开始使用新版本的this库(比方说2.x.x),但我希望这两个Lambda仍然部署并可用于处理请求。
如果在其他某个时间点,该库的版本为3.x.x,我希望使用版本3.x.x和2.x.x的lambda保持运行(基本上是当前版本和当前版本-1 lambda)。让我们称它们为Lambda_NEW和Lambda_OLD。
AWS lambdas有可以使用的版本和别名的概念,但不幸的是,它们不被serverless直接支持。注意: serverless支持多个版本(无法命名),并且有一个名为serverless- AWS -aliases的插件可以为您设置别名,但该插件指的是实际的AWS Lambda版本(请参阅https://github.com/serverless-heaven/serverless-aws-alias/issues/148)。
你有什么办法解决这个问题吗?
到目前为止,我唯一有效的想法是保留两个分支(新的和旧的),这两个分支将使用库的两个不同版本,并且每个分支将具有其不同的部署CI。这是非常违反直觉的,因为我不知道如何维护、开发和掌握分支。还有,什么时候部署到哪个阶段等。
此外,我还希望同时部署Lambda_NEW和Lambda_OLD (例如,当切换到5.x.x库时,我希望5.x.x版本在新版本中,4.x.x版本在旧版本中)
发布于 2020-01-14 23:06:10
我不确定从你的帖子,但我猜你想要一种方法来处理金丝雀部署,以便您可以轻松回滚更改?如果不是这样,你可以编辑你的问题并提供更清晰的信息吗?
如果是这样的话,我建议遵循this guide并使用canary-deployments插件,它将自动为新版本创建别名,并允许您定义如何在已部署的版本之间转移流量。
https://stackoverflow.com/questions/59715831
复制相似问题