【问题标题】:CloudFormation - Manual deletion of resource in a stack and updateCloudFormation - 手动删除堆栈中的资源并更新
【发布时间】:2020-05-16 13:31:24
【问题描述】:

使用template.yaml,Cloudformation 服务创建了具有三个 s3 存储桶的堆栈。

我手动删除了一个 s3 资源。

假设堆栈名称是stack1


再次运行相同的template.yaml(未更改),堆栈名称为stack1,在此update_procedure 之后

CloudFormation 服务是否更新相同的堆栈?接着就,随即 缺少存储桶......在我的情况下,它没有更新缺少 s3 存储桶

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    您不能在同一区域创建两个同名的堆栈。如果您要在另一个区域执行此操作,它将创建您删除的存储桶但无法创建其他存储桶,所有这些都假设您在模板中命名了您的存储桶。如果我们未命名存储桶(因此 CloudFormation 为您创建了名称),那么它将创建所有三个存储桶,但名称将与以前不同。

    当您告诉 CloudFormation 创建堆栈时,它不会更新堆栈。

    编辑: 根据您更新的问题,您似乎在询问是否会重新创建存储桶。答案是否定的。 CloudFormation 发现您所要求的内容没有任何变化,因此不采取任何措施。事实上,你应该在更新时遇到错误,说一些类似于“没有更改”的内容。

    上面的“不”也有例外,但为了你的目的,我认为这就足够了。

    对您来说最简单的解决方案是从模板中删除您删除的 S3 存储桶,运行更新(即使它已经消失,它也会“删除”它),然后将其添加回模板并更新它再次。这将导致它再次被创建。

    如果您担心将来会发生此类事情,请考虑将漂移检测与 CloudFormation 结合使用。

    【讨论】:

    • 我没有重新创建堆栈,正在更新它。请检查更新后的查询
    • 我们如何在 CFTemplate 中包含“漂移检测”?
    • 它不是模板的一部分,它是您在部署后可以通过 CLI、代码或控制台执行的操作。
    • 我们能否根据堆栈中资源的漂移检测状态更新堆栈?
    • 漂移检测就像它的名字所暗示的那样,它检测堆栈创建的资源中的漂移。它没有提供修复它的方法(至少现在还没有)。修复与以前相同。一般来说,您可能应该锁定用户执行删除 S3 存储桶等操作的能力,并且只允许通过 CloudFormation 发生这种情况。在紧急情况下,您通常有一个不同的用户/角色可以用来做类似的事情,但使用它应该会触发警报。
    猜你喜欢
    • 2017-08-30
    • 2021-04-22
    • 2021-12-18
    • 2019-08-06
    • 2019-05-09
    • 2016-07-29
    • 1970-01-01
    • 2021-01-16
    • 2021-06-27
    相关资源
    最近更新 更多