如何重用 CloudFormation 中的现有资源?

var*_*tec 32 amazon-s3 amazon-web-services amazon-cloudformation

我的 CloudFormation 模板中有一个 S3 存储桶作为资源,DeletionPolicy设置为Retain. 这按预期工作:删除堆栈时,它确实保留了存储桶。但是,当我尝试再次创建堆栈时,尝试再次创建同一个存储桶时创建失败,并显示一条错误消息,抱怨它已存在。

我需要向我的 CloudFormation 模板添加什么才能使其不尝试重新创建已存在的资源?

我的模板相关片段如下:

      "Resources": {
        "SomeS3Bucket" : {
          "Type" : "AWS::S3::Bucket",
          "DeletionPolicy" : "Retain",
          "Properties": {
              "BucketName": "SomeS3Bucket"
              }
          }
Run Code Online (Sandbox Code Playgroud)

Eri*_*ond 15

一种方法是向 CloudFormation 模板添加输入参数以指示应使用现有存储桶。

仅当参数表明需要时,才使用模板中的 Condition 子句创建存储桶。

  • +1 到目前为止,这是我见过的唯一方法。虽然没有将其标记为答案,因为我真的在寻找一种自动化的方法。 (4认同)

小智 7

CloudFormation 使用带有“aws:”前缀的标签来跟踪哪些资源与哪些堆栈中的哪些条目相关联——这是它在决定添加/删除/更新内容之前用来与模板进行比较的“实时”状态。

作为用户,您无法添加、编辑或删除此类标签。

因此,如果您现有的资源没有这些标签,或者没有这些标签的正确值,那么它们不会被视为新堆栈的一部分,我看不出有什么方法可以改变它。