EC2 Replace Root Volume の新機能「EBS ボリューム直接指定」でルートボリュームの交換を試してみた

EC2 Replace Root Volume の新機能「EBS ボリューム直接指定」でルートボリュームの交換を試してみた

EC2 Replace Root Volume に --volume-id パラメータが追加され、既存の EBS ボリュームを直接指定してルートボリュームを置換できるようになりました。実際に動作を検証し、活用場面を考察します。
2026.07.11

はじめに

2026年7月9日、EC2 の Replace Root Volume 機能に EBS ボリュームを直接指定するオプションが追加されました。

https://aws.amazon.com/about-aws/whats-new/2026/07/amazon-ec2-replace-root-volume-ebs-volume/

従来の Replace Root Volume では、起動時点の状態に戻すか、スナップショット ID または AMI ID を指定して置換していました。今回のアップデートにより、--volume-id パラメータで既存の EBS ボリュームを直接指定してルートボリュームを置換できるようになっています。全商用リージョンおよび GovCloud で利用可能です。

本記事では、--volume-id パラメータを使用して実際にルートボリュームを置換し、ボリューム内容が切り替わることを確認します。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/replace-root.html

2021年に登場した Replace Root Volume の基本機能についてはこちら。

https://dev.classmethod.jp/articles/ec2-enables-replacing-root-volumes/

2025年には Auto Scaling での対応も追加されています。

https://dev.classmethod.jp/articles/ec2-autoscaling-replace-root-volume/

検証内容

検証環境

項目
リージョン ap-northeast-1 (AZ: ap-northeast-1a)
インスタンスタイプ t3.micro
AMI Amazon Linux 2023 (ami-0af8344e5a6a14ac7)
ボリュームタイプ gp3, 8 GiB
接続方式 SSM Run Command (AWS-RunShellScript)

検証手順の概要

  1. EC2 インスタンスを起動し、ルートボリュームに目印ファイルを作成
  2. スナップショットを取得し、そこから EBS ボリュームを作成
  3. インスタンス上で目印ファイルに追記(スナップショット時点との差分を作る)
  4. --volume-id で Replace Root Volume を実行
  5. 置換後に目印ファイルを確認し、スナップショット時点の内容に戻ることを実証

目印ファイルの作成

aws ssm send-command \
  --instance-ids i-04******** \
  --document-name AWS-RunShellScript \
  --parameters 'commands=["echo \"MARKER_LINE_1: created at 2026-07-10T19:45:28Z\" > /root/marker.txt","sync"]'

/root/marker.txt に1行目(MARKER_LINE_1)を書き込み、sync でディスクに確実にフラッシュしています。

スナップショット取得と EBS ボリューム作成

MARKER_LINE_1 のみの時点でスナップショットを取得します。

aws ec2 create-snapshot \
  --volume-id vol-04******** \
  --description "Replace Root Volume test - marker line 1 only"

スナップショット snap-0b********** を作成し、completed を確認しました。このスナップショットから同一 AZ に EBS ボリュームを作成します。

aws ec2 create-volume \
  --snapshot-id snap-0b********** \
  --availability-zone ap-northeast-1a \
  --volume-type gp3

vol-04**********(available 状態)が作成されました。

目印ファイルへの追記

次に、現在のインスタンスのルートボリュームに2行目を追記します。これにより、スナップショット時点の EBS(1行のみ)と現在のルートボリューム(2行)に差分が生まれます。

aws ssm send-command \
  --instance-ids i-04******** \
  --document-name AWS-RunShellScript \
  --parameters 'commands=["echo \"MARKER_LINE_2: added after snapshot at 2026-07-10T19:46:53Z\" >> /root/marker.txt","sync"]'

この時点でのルートボリュームの内容:

MARKER_LINE_1: created at 2026-07-10T19:45:28Z
MARKER_LINE_2: added after snapshot at 2026-07-10T19:46:53Z

Replace Root Volume の実行

--volume-id パラメータで EBS ボリュームを直接指定し、Replace Root Volume を実行します。

aws ec2 create-replace-root-volume-task \
  --instance-id i-04******** \
  --volume-id vol-04********** \
  --delete-replaced-root-volume

タスクが作成され、26秒で pendingsucceeded に遷移しました。EC2 インスタンスの状態は running のまま推移しましたが、処理中にインスタンスの自動再起動が発生します。

aws ec2 describe-replace-root-volume-tasks \
  --replace-root-volume-task-ids replacevol-09**********
{
    "ReplaceRootVolumeTasks": [
        {
            "ReplaceRootVolumeTaskId": "replacevol-09**********",
            "InstanceId": "i-04********",
            "TaskState": "succeeded",
            "StartTime": "2026-07-10T19:47:15+00:00",
            "CompleteTime": "2026-07-10T19:47:41+00:00",
            "DeleteReplacedRootVolume": true
        }
    ]
}

--delete-replaced-root-volume を指定しているため、置換完了後に旧ルートボリュームが自動削除されます。

置換後の確認

aws ssm send-command \
  --instance-ids i-04******** \
  --document-name AWS-RunShellScript \
  --parameters 'commands=["cat /root/marker.txt"]'
MARKER_LINE_1: created at 2026-07-10T19:45:28Z

MARKER_LINE_2 が消え、指定した EBS ボリュームに含まれていた1行目のみの内容へ切り替わったことを確認できました。今回はこの EBS ボリュームをスナップショットから作成しているため、結果としてスナップショット取得時点の内容になっています。

制約事項

Replace Root Volume で EBS ボリュームを直接指定する際の主な条件は以下のとおりです。

  • 置換用 EBS ボリュームはインスタンスと同一の AZ に存在すること
  • ボリュームの状態が available(未アタッチ)であること
  • 暗号化されたルートボリュームを非暗号化ボリュームで置換することはできない(非暗号化→暗号化は可能)
  • --delete-replaced-root-volume を指定すると旧ルートボリュームが自動削除される(未指定の場合は available 状態で残る)

ユースケース

今回のアップデートにより想定される活用場面を紹介します。なお、性能面の計測は本記事では実施していません。

スナップショット作成・完了待ちの中間ステップ削減

事前に EBS ボリュームを用意しておけば、置換タスクの実行時にスナップショットを指定して新規ボリュームを作成する工程を経由せずに済みます。

EBS Volume Clones との組み合わせ

2025年10月に追加された EBS Volume Clones で正常時のルートボリュームをクローンしておけば、障害時の切り戻し手段として活用できる可能性があります。

https://dev.classmethod.jp/articles/amazon-ebs-volume-clones-instant-volume-copies/

別インスタンスで事前準備済みの EBS を本番ルートに直接適用

テストインスタンスにアタッチしてパッケージ更新や設定変更を施した EBS ボリュームを、デタッチ後にそのまま本番インスタンスのルートボリュームとして適用できます。

事前初期化済み EBS ボリュームの活用

スナップショットから作成した EBS ボリュームには初回読み取り時のファーストタッチペナルティがありますが、事前に ddfio で全ブロックを読み込んで初期化しておけば、このペナルティを抑えられます。EBS 直接指定では Replace Root Volume 実行時に新規ボリュームを作成しないため、事前初期化済みのボリュームをそのまま持ち込めます。従来は FSR の有効化が代表的な選択肢でしたが、事前準備の時間が取れるケースでは代替手段になり得ると考えられます。

まとめ

EC2 Replace Root Volume に --volume-id パラメータが追加され、Replace Root Volume の実行時にスナップショットや AMI を指定せず、既存の EBS ボリュームを直接ルートボリュームとして適用できるようになりました。

今回の検証では、スナップショットから作成した EBS ボリュームを指定し、ルートボリュームの内容が指定ボリュームの内容へ切り替わることを確認しました。

事前に準備・検証した EBS ボリュームを適用するワークフローや、あらかじめ初期化したボリュームを利用したいケースで活用できそうです。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事