Intro
- デフォルトでは、EC2 インスタンスが終了すると、アタッチされた EBS ボリュームも削除されます。しかし、AWS CLI を使用してこれらを永続化する方法を探ってみましょう。
技術要素
コマンド
- タグによってフィルタリングされた対象インスタンスのボリューム情報を取得します。
- DeleteOnTermination が true である場合、ボリュームは永続化されていないことを意味します。
$ aws ec2 describe-instances --filters "Name=tag:Name,Values=xxxxx-prod-web01" | jq -r .Reservations[0].Instances[0].BlockDeviceMappings
[
{
"DeviceName": "/dev/sda1",
"Ebs": {
"AttachTime": "2023-04-18T04:59:14+00:00",
"DeleteOnTermination": true,
"Status": "attached",
"VolumeId": "vol-xxxxxxxxxxxx"
}
}
]
- 設定ファイルを準備します。
- DeleteOnTermination を false に設定します。
$ vim mapping.json
[
{
"DeviceName": "/dev/sda1",
"Ebs": {
"DeleteOnTermination": false
}
}
]
$ aws ec2 modify-instance-attribute --instance-id "i-xxxxxxxxxxxxxx" --block-device-mappings file://mapping.json
- タグでフィルタリングされた対象インスタンスのボリューム情報を取得します。
- DeleteOnTermination が false であることを確認します。
$ aws ec2 describe-instances --filters "Name=tag:Name,Values=xxxxx-prod-web01" | jq -r .Reservations[0].Instances[0].BlockDeviceMappings
[
{
"DeviceName": "/dev/sda1",
"Ebs": {
"AttachTime": "2023-04-18T04:59:14+00:00",
"DeleteOnTermination": false,
"Status": "attached",
"VolumeId": "vol-xxxxxxxxxxxx"
}
}
]