安全删除云形成堆栈中的EBS卷

时间:2017-10-23 21:34:37

标签: amazon-web-services amazon-cloudformation aws-ebs

我有一个cloudformation堆栈,我用2个EBS卷创建实例,1个主/ root,1个包含大量测试数据。附加测试数据的唯一原因是在堆栈创建之后将数据加载到hadoop中。在那之后,我没有必要保持EBS卷附加并为此付钱。但是如果我手动或使用boto3库删除它,如果我尝试更新或删除它会导致cloudformation堆栈出现问题吗?像删除失败,因为它找不到资源或者我尝试使用新标记更新堆栈,它会失败,因为它找不到资源。任何指导表示赞赏。

更新: 看起来像cloudformation不会在堆栈资源中为我的卷创建资源,因为我在那里看不到它。但是当我点击实例时,它有/ dev / sda1用于块设备,当我将鼠标悬停在它上面时,它会显示我在我的cloudformation中创建它的卷的EBS ID。

我的云形态模板:

  ###################
  ### Master node ###
  ###################
  MasterNode:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !FindInMap [RegionMap, !Ref "AWS::Region", ami]
      InstanceType: r3.large
      KeyName: !FindInMap [RegionMap, !Ref "AWS::Region", key]
      SubnetId: !FindInMap [RegionMap, !Ref "AWS::Region", subnet]
      IamInstanceProfile: !Ref MasterNodeProfile
      SecurityGroupIds:
      - !Ref SecurityGroup
      - !Ref InternalSecurityGroup
      Tags:
      -
        Key: Name
        Value: Master for XYZ
      BlockDeviceMappings:
      - DeviceName: /dev/sda1
        Ebs:
          VolumeSize: 20
          DeleteOnTermination: True
          VolumeType: gp2
      UserData:
        Fn::Base64: !Sub |
           #!/bin/bash -xe
           yum install epel-release -y
           yum install python-pip -y
           pip install awscli

2 个答案:

答案 0 :(得分:1)

不是手动删除它,而是更新将删除资源的堆栈。如果手动删除堆栈更新/删除并且不更新堆栈,则堆栈更新/删除将失败。

来自:I have manually deleted a resource that was created by CloudFormation. Updates to my stack are now failing—how can I resolve this issue?

  

如果资源被删除,因为您不再需要它而且您想要它   要从堆栈中删除它,删除资源和任何引用   它来自您的模板,然后执行堆栈更新。

答案 1 :(得分:1)

您可以尝试使用EC2属性上的BlockDeviceMappings来定义卷。 首先,你想拥有两个卷,你可以添加这些代码。

"BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/sd1",
                    "Ebs": {
                        "VolumeSize": "50",
                        "DeleteOnTermination": true
                    }
                }
            ]

您只需添加一个,因为在创建EC2实例时会自动创建根。 然后,如果要删除它,请删除该部分(上面的代码),然后更新实例。 它将删除第二个卷(/ dev / sd1)。