はじめに
2027年1月12日、Windows Server 2016の延長サポートが終了します。
私たちのチームでも、長年運用してきたEC2インスタンスの移行が課題となっていました。
本記事は私たちのチームで実施したWindows Server 2016からWindows Server 2025へのインプレースアップグレードの記録です。
なぜ「インプレースアップグレード」を選択したのか?
移行方法には、インプレースアップグレードの他に新規インスタンスを構築して移行するという選択肢もあります。
-
インプレースアップグレード(今回採用)
- メリット:移行が比較的容易で、設定を引き継げる。
- デメリット:OS起因のトラブルリスクがあり、切り戻しが困難。
-
新規インスタンスへの移行
- メリット:安全な切り替えが可能で、切り戻しも簡単。
- デメリット:インフラ構築コストがかかり、設定の再構築が必要。
私たちの対象システムは、長年運用されてきた業務アプリケーションサーバーでした。
新規インスタンスに移行する場合、アプリケーションの動作検証や設定の再構築に工数がかかることが予想されました。
そこで、「既存の環境設定を最大限維持しつつ、OSのみを刷新する」ことを目指し、リスクを管理した上でのインプレースアップグレードを選択しました。
重要
本記事は、あくまで私たちのチームにおける一事例の共有を目的としています。
実際にご対応される際は、必ずMicrosoftやAWSの公式ドキュメントを正とし、ご自身の環境で十分な検証を行った上で、自己の責任において作業してください。
インプレースアップグレードは手順がシンプルな反面、予期せぬトラブルのリスクも存在します。
公式ドキュメントの確認といつでも切り戻せるバックアップの準備、そして何よりも本番環境で作業する前に、必ず開発環境などで検証を行うことが成功の絶対条件です。
アップグレード手順
ここからは具体的な手順を紹介します。
0. 前提条件の確認
アップグレード作業を始める前に以下の点を確認しました。
-
サポートされているアップグレードパスの確認
- Microsoftの公式ドキュメントで、Windows Server 2016からWindows Server 2025への直接アップグレードがサポートされていることを確認します。
-
インスタンスタイプの確認
- Windows Server 2025の推奨メモリは4GB以上です。(デスクトップ エクスペリエンス搭載サーバーの場合)
- 現在のEC2インスタンスのメモリがこれに満たない場合、パフォーマンス不足に陥る可能性があるため、アップグレード前後でのインスタンスタイプ変更を検討する必要があります。
-
EC2Launchのバージョン
- Windows Server 2025は、古いEC2Launch v1をサポートしていません。
- 記事の手順にも含まれていますが、アップグレード後にはEC2Launch v2への移行が必要となることを、あらかじめ認識しておくことが重要です。
-
その他
- 使っているEC2インスタンスによってアプリケーションが動くのか等、移行によりサービス提供に悪影響が出ないかを確認する必要があります。
1. 【最重要】EBSスナップショットによるバックアップ取得
何よりもまずは万が一のためのバックアップを確保します。
EC2コンソールから、対象インスタンスにアタッチされているEBSボリュームのスナップショットを作成します。
- AWSマネジメントコンソールから EC2 > スナップショット > スナップショットの作成 ボタンを押します。
- 下記を設定して作成します。
リソースタイプ: ボリューム
ボリュームID: ${対象のボリュームID}
スナップショットの説明: before-windows-upgrade-${対象のインスタンス名}
- スナップショット完了まで待機します。
2. AWS Systems Managerによるドライバー更新
アップグレードに備え、最新ドライバーを適用します。
- 対象のインスタンスを起動します。
- AWSマネジメントコンソールから Systems Manager > 自動化 に移動し、「オートメーションの実行」ボタンを押します。
- 検索ボックスに AWSSupport-UpgradeWindowsAWSDrivers と入力し、表示されたドキュメントを選択します。
- InstanceId パラメータから対象のインスタンスを選択して実行します。
- 成功と表示されるまで待機します。
ポイント①
このオートメーションは、実行前にバックアップ用のAMIを自動で作成します。
処理が正常に完了した場合、このAMIは不要になります。
コスト最適化と管理の簡素化のため、完了後にAMIの登録解除と、それに紐づくスナップショットの削除を忘れずに行いましょう。
3. インストールメディアの準備
Windows Server 2025のインストールメディアを、パブリックスナップショットからボリュームとして作成し、対象インスタンスにアタッチします。
- 対象のインスタンスを停止します。
- AWSマネジメントコンソールから EC2 > スナップショット で、プルダウンから パブリックスナップショット を選択します。
- 検索バーで[所有者のエイリアス]、[=]、[amazon] の順に選択します。
- 検索バーで[説明]、[次を含む]、[Windows 2025 Japanese Installation Media]の順に選択します。
- 見つかったスナップショットからボリュームを作成します。
ポイント②
ボリュームを作成する際、アベイラビリティゾーンをアップグレード対象のインスタンスと必ず一致させてください。
ゾーンが異なるとボリュームをアタッチできません。
- 作成したボリュームを、対象インスタンスにデバイス名 xvdf などでアタッチします。
4. アップグレードの実行
いよいよアップグレードを実行します。
対象インスタンスを起動し、RDP接続してください。
- Windows PowerShellを管理者として開きます。
- アタッチしたインストールメディア(D:ドライブとして認識されている想定)に移動し、セットアップコマンドを実行します。
cd D:
.\\setup.exe /auto upgrade /dynamicupdate disable
ポイント③
/dynamicupdate disable オプションは、アップグレードプロセス中の意図しないWindows Updateの実行を防ぎ、処理を安定させるために重要な役割を果たします。
- GUIインストーラーが起動したら、イメージの選択画面で「Windows Server 2025 Datacenter (デスクトップ エクスペリエンス)」を選択し、アップグレードを進めます。
- アップグレード完了まで待機
5. EC2Launch v2への移行
アップグレード完了後、EC2Launch v2エージェントをインストールします。
- 再度インスタンスにRDP接続します。
- Windows PowerShellで以下のコマンドを順に実行し、インストーラーをダウンロード・実行します。
New-Item -Path "$env:USERPROFILE\\Desktop\\EC2Launchv2" -ItemType Directory
$Url = "https://s3.amazonaws.com/amazon-ec2launch-v2/windows/amd64/latest/AmazonEC2Launch.msi"
$DownloadFile = "$env:USERPROFILE\\Desktop\\EC2Launchv2\\" + $(Split-Path -Path $Url -Leaf)
Invoke-WebRequest -Uri $Url -OutFile $DownloadFile
msiexec /i "$DownloadFile"
6. インストールメディアボリュームを削除
アップグレード作業が完了したら、後片付けを行います。
- 対象のインスタンスを停止します。
- 手順3でアタッチしたインストールメディアのボリュームをデタッチします。
- デタッチしたボリュームが不要であれば、削除します。
ポイント④
ボリュームをアタッチしたままにしておくと、無駄なコストが発生し続けます。
不要な場合は確実に削除しましょう。
7. 最終確認とバックアップの削除
- インスタンスを起動し、OSが正常に動作すること、およびアプリケーションが期待通りに機能することを十分に確認します。
- 全ての動作確認が完了し、システムが安定稼働していると判断できたら、手順1で作成したEBSスナップショットを削除します。
ポイント⑤
動作確認が完了するまでは、スナップショットは「最後のお守り」として保持しておきましょう。
問題が発生した場合、このスナップショットからボリュームを復元することで、作業前の状態に切り戻すことができます。
おわりに
以上、EC2上のWindows Server 2016をWindows Server 2025に「インプレースアップグレード」で移行した際の記録でした。
この方法は、アプリケーションへの影響を最小限に抑えつつOSを刷新できる強力な選択肢ですが、事前の検証とバックアップが成功の鍵となります。

