EC2 Replace Root Volume の新機能「EBS ボリューム直接指定」でルートボリュームの交換を試してみた
はじめに
2026年7月9日、EC2 の Replace Root Volume 機能に EBS ボリュームを直接指定するオプションが追加されました。
従来の Replace Root Volume では、起動時点の状態に戻すか、スナップショット ID または AMI ID を指定して置換していました。今回のアップデートにより、--volume-id パラメータで既存の EBS ボリュームを直接指定してルートボリュームを置換できるようになっています。全商用リージョンおよび GovCloud で利用可能です。
本記事では、--volume-id パラメータを使用して実際にルートボリュームを置換し、ボリューム内容が切り替わることを確認します。
2021年に登場した Replace Root Volume の基本機能についてはこちら。
2025年には Auto Scaling での対応も追加されています。
検証内容
検証環境
| 項目 | 値 |
|---|---|
| リージョン | ap-northeast-1 (AZ: ap-northeast-1a) |
| インスタンスタイプ | t3.micro |
| AMI | Amazon Linux 2023 (ami-0af8344e5a6a14ac7) |
| ボリュームタイプ | gp3, 8 GiB |
| 接続方式 | SSM Run Command (AWS-RunShellScript) |
検証手順の概要
- EC2 インスタンスを起動し、ルートボリュームに目印ファイルを作成
- スナップショットを取得し、そこから EBS ボリュームを作成
- インスタンス上で目印ファイルに追記(スナップショット時点との差分を作る)
--volume-idで Replace Root Volume を実行- 置換後に目印ファイルを確認し、スナップショット時点の内容に戻ることを実証
目印ファイルの作成
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秒で pending → succeeded に遷移しました。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 で正常時のルートボリュームをクローンしておけば、障害時の切り戻し手段として活用できる可能性があります。
別インスタンスで事前準備済みの EBS を本番ルートに直接適用
テストインスタンスにアタッチしてパッケージ更新や設定変更を施した EBS ボリュームを、デタッチ後にそのまま本番インスタンスのルートボリュームとして適用できます。
事前初期化済み EBS ボリュームの活用
スナップショットから作成した EBS ボリュームには初回読み取り時のファーストタッチペナルティがありますが、事前に dd や fio で全ブロックを読み込んで初期化しておけば、このペナルティを抑えられます。EBS 直接指定では Replace Root Volume 実行時に新規ボリュームを作成しないため、事前初期化済みのボリュームをそのまま持ち込めます。従来は FSR の有効化が代表的な選択肢でしたが、事前準備の時間が取れるケースでは代替手段になり得ると考えられます。
まとめ
EC2 Replace Root Volume に --volume-id パラメータが追加され、Replace Root Volume の実行時にスナップショットや AMI を指定せず、既存の EBS ボリュームを直接ルートボリュームとして適用できるようになりました。
今回の検証では、スナップショットから作成した EBS ボリュームを指定し、ルートボリュームの内容が指定ボリュームの内容へ切り替わることを確認しました。
事前に準備・検証した EBS ボリュームを適用するワークフローや、あらかじめ初期化したボリュームを利用したいケースで活用できそうです。







