是否可以使用 CloudFormation 重新创建 AWS 资源?

Gre*_*oid 8 amazon-web-services aws-cloudformation

假设 AWS 堆栈是使用 CloudFormation 创建的。现在,其中一项资源已在 CloudFormation外部进行了修改。

1)是否可以让CloudFormation专门创建这些资源?根据我的理解,我们不能这样做,因为 CloudFormation 无法识别差异,因此不会创建修改后的资源。我的观察正确吗?

2) 另外,如果在 CloudFormation 外部进行修改,我必须采取哪些选项才能将堆栈恢复到原始状态?

Ama*_*pta 8

这是一种可以在不删除整个堆栈的情况下使用的技巧。

  1. 从模板中删除意外删除的特定资源。
  2. 现在更新堆栈,使您的堆栈和帐户中的资源同步。
  3. 将模板恢复到步骤 1 之前的状态并再次更新,这将创建意外删除的资源。


wjo*_*dan 1

首先,请注意,根据AWS CloudFormation 最佳实践,明确不鼓励在 CloudFormation 之外修改 CloudFormation 创建的资源:

通过 AWS CloudFormation 管理所有堆栈资源

启动堆栈后,使用 AWS CloudFormation控制台APIAWS CLI更新堆栈中的资源。请勿对 AWS CloudFormation 外部的堆栈资源进行更改。这样做可能会导致堆栈模板与堆栈资源的当前状态不匹配,如果您更新或删除堆栈,则可能会导致错误。

但是,如果您意外修改了 CloudFormation 管理的资源并需要恢复,除了简单地删除并重新创建堆栈之外,您可能还有一些有限的选择(这可能不是可接受的选项):

  1. CloudFormation 不可能根据外部修改的资源的当前状态自动更新其内部状态。

    但是,根据具体的资源类型,在某些情况下,您可以通过应用与资源当前状态匹配的堆栈更新来手动更新 CloudFormation。

  2. 同样,CloudFormation 也不可能自动将外部修改的资源恢复到其原始未修改的 CloudFormation 状态。

    但是,根据具体的资源类型,在某些情况下您可以:

    • 通过手动将资源更新回其原始状态来恢复资源;
    • Update the resource by applying a stack update, bringing both the CloudFormation stack and the managed resource to an altogether new state that will once again be in sync.