AWS“Bucket已存在” - 如何将现有资源“迁移”到CloudFormation?

时间:2017-05-17 10:49:10

标签: amazon-web-services amazon-cloudfront

我们已经手动创建了一些基础设施,并使用了terraform,包括一些s3存储桶。在未来,我想使用纯CloudFormation将基础架构定义为代码。

所以我创建了一个引用现有存储桶的CloudFormation yaml定义:

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  TheBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: my-existing-bucket-name

当我尝试应用它时,执行失败,使用CloudFormation堆栈事件:

The following resource(s) failed to update: [TheBucket].
12:33:47 UTC+0200   UPDATE_FAILED   AWS::S3::Bucket TheBucket
  my-existing-bucket-name already exists

如何使用CloudFormation开始管理现有资源而无需重新创建?或者设计是否不可能?

3 个答案:

答案 0 :(得分:2)

您需要创建一个新存储桶并将旧存储桶中的数据同步到新存储桶。我还没有看到使用修改现有S3存储桶的方法。

答案 1 :(得分:1)

云形成模板的资源部分定义了应该通过云形成创建哪些资源。尝试通过将它们定义为参数来引用现有资源。

答案 2 :(得分:1)

您应该能够使用“将资源导入堆栈”选项来导入它:

enter image description here

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import-existing-stack.html

如文档所述,您应该向堆栈中现有的资源添加一个 "DeletionPolicy": "Retain" 属性。