当 EC2 实例终止时,EBS Volume 发生了什么?

What's happening with EBS Volume when an EC2 instance is terminated?

当我终止 EC2 实例时,我认为 EC2 实例会在附加 EBS 卷(不是根卷)分离后终止。

但是,即使我查找 Cloudtrail,也找不到名为 DetachVolume 的事件。

当我终止一个 EC2 实例时,EBS 是否会在不分离的情况下执行断开连接之类的操作?

EC2 实例终止时 EBS 卷发生了什么?

当 AWS EC2 实例终止时,附加到它的 AWS EBS 卷要么被分离并删除,要么只是被分离而不被删除。这取决于附加的 AWS EBS 卷的名为 Delete on termination 的属性的值。您可以通过选择 AWS EC2 实例然后导航到存储选项卡在 AWS EC2 控制台上看到这一点。

默认情况下,根卷的值为 True,其他卷的值为 False

您只能使用 AWS CLI 修改此值。从 AWS EC2 控制台,您可以仅在启动新实例时设置它的值。对于已经 运行 个 AWS EC2 实例,使用 AWS CLI。

使用 AWS CLI 的示例如下:

  • 使用 .json 文件:aws ec2 modify-instance-attribute --instance-id i-a3ef245 --block-device-mappings /path/to/file.json

    • .json 文件格式:
    [
      {
      "DeviceName": "/dev/sda1",
      "Ebs": {
        "DeleteOnTermination": false
        }
      }
    ]
    
  • 使用 .json 内联对象:aws ec2 modify-instance-attribute --instance-id i-a3ef245 --block-device-mappings "[{\"DeviceName\": \"/dev/sda\",\"Ebs\":{\"DeleteOnTermination\":false}}]"

有关更多信息,请查看:How can I prevent my Amazon EBS volumes from being deleted when I terminate Amazon EC2 instances?

当实例终止时,每个附加的 EBS 卷的 DeleteOnTermination 属性值决定是保留还是删除该卷。默认情况下,根卷的 DeleteOnTermination 属性设置为 True,对于所有其他卷类型设置为 False

  1. 终止时删除 - false 卷 ID 设备名称 大小 状态 加密 KMS ID 终止时删除 vol-09*** /dev/xvda 8 附无 – 有

    vol-03** /dev/sdb 8 附无 – 无

实例终止后的状态:可用

  1. 终止时删除 - 正确

    卷 ID 设备名称大小状态加密 KMS ID 终止时删除

    vol-09*** /dev/xvda 8 附无 – 有

    vol-03** /dev/sdb 8 附无 – 有

EBS 卷的状态。除了实例终止后的根卷:已删除