【问题标题】:How to fix a drifted AWS CloudFormation stack?如何修复漂移的 AWS CloudFormation 堆栈?
【发布时间】:2019-06-20 12:18:30
【问题描述】:

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

【问题讨论】:

  • CloudFormation 只要有微小的变化就会吓坏,通常甚至无法检测到它。建议:使用 Terraform。我在 CloudFormation 上浪费了很多时间,最后我还是回到了 Terraform。

标签: amazon-web-services amazon-cloudformation amazon-ecs


【解决方案1】:

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

可以通过导航到 CloudFormation > 选择堆栈 > 操作 > 检测当前堆栈的漂移来访问漂移检测

在此处了解更多信息:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/detect-drift-stack.html

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

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

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

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

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

【讨论】:

  • 它说我的 AWS::ECS::Service 已被修改,但是我无法更新 ECS 服务,它不断搜索以前删除的 ECS 服务
  • 我在尝试解决我是否可以从某人手动调整 S3 存储桶中的设置以及我所做的每个模板编辑以及按下“更新堆栈”后它一直说“不已执行更新”。也许未来的版本只会让我们撤消漂移差异所在的位置?
  • 如何重新创建已删除的内容?它会有不同的id。他们为什么要制造这些无用的功能?
  • 还有第四个选项,通过importing resources修复漂移。
  • 如果删除一些资源 - 只有 asg 可以重新创建它,其他的 - 只是在漂移中被“删除”,没有自动修复。 Simper - 删除堆栈并重新创建它(当它在删除时中断 - 我们在菜单中有“跳过损坏的步骤”)。或者 - 非常难 - 下载 tempkate,从已删除的部分中清除它,更新,然后恢复旧模板。我现在就做——浪费了 8 个小时。
【解决方案2】:

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

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

【讨论】:

  • 一个非破坏性修复问题的好解决方案,很好的想法,感谢分享......效果很好。
猜你喜欢
  • 1970-01-01
  • 2020-04-30
  • 2018-03-24
  • 2018-08-06
  • 2021-03-31
  • 2017-10-18
  • 1970-01-01
  • 2021-05-16
  • 2018-07-01
相关资源
最近更新 更多