Persisting an Attached EBS Volume to EC2 Using AWS CLI.

May 3, 2023

Intro

  • デフォルトでは、EC2 インスタンスが終了すると、アタッチされた EBS ボリュームも削除されます。しかし、AWS CLI を使用してこれらを永続化する方法を探ってみましょう。

技術要素

  • EC2/EBS

コマンド

  • タグによってフィルタリングされた対象インスタンスのボリューム情報を取得します。
    • 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"
    }
  }
]
Nifty tech tag lists from Wouter Beeftink