如何修复漂移的 AWS CloudFormation 堆栈?

Byt*_*eMe 16 amazon-web-services amazon-ecs aws-cloudformation

如何修复漂移的 AWS CloudFormation 堆栈?我修改了一个 BackendECS 服务,现在它“漂移”了,但没有关于如何解决这个问题的信息?这让我发疯?关于如何解决这个问题的零信息?

小智 11

我在 cloudformation 上遇到了类似的问题,同样,仍然缺乏如何将实例“恢复”到模板指定的内容的文档。我发现注释掉漂移的实体允许 cloudformation“删除”它,然后取消注释将其恢复到所需的状态。

也就是说,我会支持仅使用 terraform 的动议,因为每当您执行应用时,强制执行模板是默认行为。

  • 一个很好的非破坏性解决方案,良好的想法,感谢分享......效果很好。 (2认同)

sir*_*poc 6

Amazon AWS 允许通过其“漂移检测”功能对漂移堆栈进行故障排除。

可以通过导航到 CloudFormation > Select Stack > Actions > Detect Drift for current stack 来访问漂移检测

更多相关信息:https : //docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/detect-drift-stack.html

使用此诊断工具,您可以准确查看 AWS 配置与 cloudformation 预期状态相比的不同之处。

有几种方法可以解决这个问题。

1) 如果您通过基础设施即代码服务进行了自动更新,请回滚您的更改

2) 如果您手动更新了 ECS 服务,请将设置更改回预期状态,如漂移检测中所示。一旦您的系统恢复到预期状态,您的堆栈将正常运行

3) 删除当前堆栈资源并重新创建它 - 这是解决此问题的危险方法,因为您将丢失更新历史记录和回滚状态。

  • 如何重新创建已删除的内容?它将有不同的 id。他们为什么要制造这些无用的功能? (13认同)
  • @Matteo 在我手动删除 API Gateway 后,我设法通过以下方式重新创建它:a)将其从模板中删除并更新堆栈,b)将其完全恢复到模板中之前的状态并再次更新堆栈。 (4认同)