起動中のEC2インスタンスのEBSボリュームのDeleteOnTermination設定を変更する手順。
通常、コンソールからだと、起動時のボリュームアタッチ時にしか設定できない。
そのため、あとから変更したい場合や、起動後にボリュームをアタッチした場合にはベットCLIから設定する必要があり、aws ec2 modify-instance-attribute
コマンドで設定可能である。
# EBS作成
$ aws ec2 create-volume --availability-zone ap-northeast-1a --size 8 --volume-type gp2
$ aws ec2 create-volume --availability-zone ap-northeast-1a --size 8 --volume-type gp2
# EBSアタッチ
$ aws ec2 attach-volume --instance-id i-0cd13d242c52faxxx --volume-id vol-0c715576745bdbf9c --device /dev/sdb
$ aws ec2 attach-volume --instance-id i-0cd13d242c52faxxx --volume-id vol-0c589364244gmdl2a --device /dev/sdc
# 設定ファイルを作成
$ touch mapping.json
$ nano mapping.json
$ cat mapping.json
[
{
"DeviceName": "/dev/sdb",
"Ebs": {
"DeleteOnTermination": true
}
}
# インスタンス終了時の挙動を反映
$ aws ec2 modify-instance-attribute --instance-id i-0cd13d242c52faxxx --block-device-mappings file://mapping.json
# マウントされていることを確認
$ df /dev/sdb
$ df /dev/sdc
EC2コンソールのナビゲーションペインからボリュームを選択し、3つ(インスタンス生成時のデフォルトのebs+今作成したebs2つ)がin-use
であることを確認。
EC2コンソールからインスタンスを終了。
再度EBSを確認すると1つのボリューム(削除設定をしなかった方のvol-id)のみがavailable
で残っていることが確認できる。
なお、mapping.json
ファイルとしないでコマンドのいオプションにずらずら書くことも可能。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/terminating-instances.html#preserving-volumes-on-termination