我有一个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
答案 0 :(得分:1)
不是手动删除它,而是更新将删除资源的堆栈。如果手动删除堆栈更新/删除并且不更新堆栈,则堆栈更新/删除将失败。
如果资源被删除,因为您不再需要它而且您想要它 要从堆栈中删除它,删除资源和任何引用 它来自您的模板,然后执行堆栈更新。
答案 1 :(得分:1)
您可以尝试使用EC2属性上的BlockDeviceMappings
来定义卷。
首先,你想拥有两个卷,你可以添加这些代码。
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sd1",
"Ebs": {
"VolumeSize": "50",
"DeleteOnTermination": true
}
}
]
您只需添加一个,因为在创建EC2实例时会自动创建根。 然后,如果要删除它,请删除该部分(上面的代码),然后更新实例。 它将删除第二个卷(/ dev / sd1)。