【问题标题】:How to avoid downtime when updating a stage variable on a API gateway deployment?在 API 网关部署上更新阶段变量时如何避免停机?
【发布时间】:2019-01-28 13:50:32
【问题描述】:

我目前在 AWS API 网关的阶段 DEV 上部署了一个 API example_api。

我想更新其阶段变量之一并确保部署更改。 API 由 CloudFormation 提供,阶段变量映射到模板参数。

我使用 boto3 和 CloudFormation(使用 UsePreviousTemplate 标志)更新堆栈并提供新值。

然后我使用 boto3 为 DEV 上的 example_api 调用 create_deployment(以更新 DEV 上已部署的 example_api)。

此时,我的 API 在大约 15-20 秒内变得不可用。我不断收到 {"message":"Missing Authentication Token"} 响应。

我想我在这里做错了什么。我是否应该避免这样的停机时间并确保新 API 尽快可用?

注意:我的 API 是通过 API 网关中的自定义域名访问的。基本路径映射到 DEV 阶段。

谢谢

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-api-gateway boto3


    【解决方案1】:

    问题是云形成模板使用部署资源的 StageDescription 属性创建了阶段,我没有正确理解部署/阶段关系。

    Resource Stage DEV 最初与 Deployment Named000 绑定。

    我的第一个 update_stack 调用用于更新阶段变量,但也将阶段 DEV 重新绑定到初始部署 (Named000)。丢失自(任何新路由)以来应用的任何更改。

    通过创建部署资源并在其名称后附加时间戳以确保每次使用对流层生成堆栈时都会创建新资源,我能够更新阶段变量并在不停机的情况下正确部署。然后使用新的阶段变量更新堆栈将使阶段与最新部署绑定并避免引入停机时间。

    【讨论】:

      猜你喜欢
      • 2017-05-16
      • 2016-12-19
      • 2013-05-31
      • 2020-11-24
      • 2018-07-25
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      相关资源
      最近更新 更多