AWS Lambda 和 Gateway API - 使用 cloudformation 的蓝/绿部署

Posted

技术标签:

【中文标题】AWS Lambda 和 Gateway API - 使用 cloudformation 的蓝/绿部署【英文标题】:AWS Lambda and Gateway API - blue/green deployment with cloudformation 【发布时间】:2017-06-12 16:26:18 【问题描述】:

使用 cloudformation 模板使用 Gateway API 部署 lambda 函数时,我想将不同阶段创建的 Gateway API 放在 route53 后面,因此可以使用加权流量进行蓝/绿部署。是否可以自动化整个过程而无需手动登录到控制台进行配置?

【问题讨论】:

【参考方案1】:

您将无法执行此操作。 API Gateway 不会理解您的 Route53 别名。目前还没有针对 API 网关和 Lambda 的开箱即用的蓝/绿解决方案。

【讨论】:

Bob,您可以分享任何链接,以便在 lambda 前面为 Gateway API 进行加权流量蓝/绿部署吗? 今天实现这一目标的唯一方法是在您尝试平衡的 2 个 lambda 之间放置一个 Lambda(或 API Gateway + Lambda)。我没有任何文档,因为这不是理想的配置。我们希望将来能够为 API Gateway 添加对此类部署的支持。 添加另一个 lambda 来拆分流量会产生更多的成本和延迟,这可能不是首选方法...如果没有网关 API,对于带有 route53 的 lambda 本身,任何用于加权蓝/绿的参考架构部署? @Hammer 目前没有,由于所指出的限制。 @p.magalhaes 正如我之前的评论中提到的:我们希望在未来增加对此类部署的支持,但我无法确定它们何时可用。【参考方案2】:

@鲍勃,

我已经看到你的一些答案,我问过另一个,我有一个工作解决方案,它依赖于 SWITCH 作为 APIG 阶段的基本路径映射。

虽然 AWS 刚刚引入了 Canary,但它依赖于 CodeDeploy,我们很多人在使用无服务器框架之类的东西时并不使用它。

这个想法很简单,当您部署时,如果您在达到某个阈值后为每个非 2XX 错误触发 SNS 事件,则在阶段(蓝色/绿色)之间切换基本路径映射,您只需将基本路径映射转回即可立即生效?

这有什么不可行的原因吗?

【讨论】:

【参考方案3】:

AWS API Gateway 现在支持蓝/绿和金丝雀部署。

另一种流量转移模式是启用蓝/绿部署。这种近乎零停机时间的版本使流量能够转移到新的实时环境(绿色),同时仍然保持旧的生产环境(蓝色)温暖,以防需要回滚。由于 API Gateway 允许您定义转移到特定环境的流量百分比;这种部署方式可能是一种有效的技术。由于蓝/绿部署旨在减少停机时间,因此许多客户采用这种模式进行生产更改。

https://docs.aws.amazon.com/wellarchitected/latest/serverless-applications-lens/bluegreen-deployments.html

【讨论】:

以上是关于AWS Lambda 和 Gateway API - 使用 cloudformation 的蓝/绿部署的主要内容,如果未能解决你的问题,请参考以下文章

如何调试 AWS Api Gateway 和 Lambda 的“AWS/ApiGateway 5XXError”

从 AWS API Gateway Web 界面配置 AWS Lambda 时无法选择/查看 Lambda 函数

从AWS API-Gateway中找出lambda名称

如何将特定 AWS API Gateway 阶段连接到特定 AWS lambda 别名

使用 AWS Lambda 和 API Gateway NodeJs 的格式错误的 Lambda 代理响应

使用代理通过 AWS API Gateway 的 Lambda 错误