【AWS】EC2インスタンス作成後にEBSの「終了時に削除」を有効化する方法とは?

2024/02/01に公開

はじめに

現場でAWSCLIでEC2インスタンスを作成した後にEBSの「終了時に削除」が有効化されていなかったので、有効化するということがありました。
今回は、こちらの方法をアウトプットしていきたいと思います。

前提

  • EC2インスタンスが作成済みで起動している。
  • EBSの「終了時に削除」の設定が無効になっている。
  • PCに以下バージョンのAWSCLIを導入済み。
$ aws --version
aws-cli/2.15.11 Python/3.11.6 Darwin/23.2.0 exe/x86_64 prompt/off

作業手順

1.EC2インスタンス

AWSコンソールから対象EC2インスタンスの情報を確認し、以下の情報を控える。

控える情報
インスタンスID i-0d6191b4cc10999a
EBSのデバイス名 /dev/sda1

2.EBSの「終了時に削除」の有効化

以下のjsonを任意の場所に用意する。

json
[
  {
    "DeviceName": "device_name",
    "Ebs": {
      "DeleteOnTermination": true
    }
  }
]

記載例は、以下になります。

mapping.json
[
  {
    "DeviceName": "/dev/sda1",
    "Ebs": {
      "DeleteOnTermination": true
    }
  }
]

CLI画面にてjsonが存在するディレクトリへ移動し、AWSCLIより以下のコマンドを実行する。

コマンド
aws ec2 modify-instance-attribute --instance-id <インスタンスID> --block-device-mappings file://<json名>

コマンドの実行例は、以下になります。

実行コマンド例
aws ec2 modify-instance-attribute --instance-id i-0d6191b4cc10999a --block-device-mappings file://mapping.json

3.EBSの「終了時に削除」の設定確認

EBSの「終了時に削除」が有効化になっていることを確認する。

コマンド
$ aws ec2 describe-instances --instance-id <インスタンスID> --query Reservations[].Instances[].BlockDeviceMappings[]

DeleteOnTerminationの部分がTrueになっていることを確認する。

実行コマンド例
$ aws ec2 describe-instances --instance-id i-0d6191b4cc10999a --query Reservations[].Instances[].BlockDeviceMappings[]
[
    {
        "DeviceName": "/dev/sda1",
        "Ebs": {
            "AttachTime": "2023-12-05T23:22:22+00:00",
            "DeleteOnTermination": true,
            "Status": "attached",
            "VolumeId": "vol-0e2d73d9d15b7d08b"
        }
    }
]

参考

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/terminate-instances-considerations.html

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/modify-instance-attribute.html

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-instances.html

Discussion