EC2(Windows)複製時の留意点

2023年1月30日 富士通株式会社 官公庁事業本部  清武 徹

はじめに

「政府情報システムにおけるクラウドサービスの適切な利用に係る基本方針」(注1)にも記載がある通り、IaC (Infrastructure as Code)とテンプレートによる環境構築の自動化によるコスト削減や品質の確保は重要なテーマです。
AWSではEC2を構築する手法として、提供されるイメージから新規にインスタンスを構築する方法以外に、構築済みのEC2インスタンスを複製して、インスタンスを構築する方法が存在します。
EC2をシステムに用いる場合、構築・テストが終わった環境をAMI(Amazon Machine Image)として保存し、そこからIaCを用いて展開することで、複数インスタンス環境における品質を確保しつつ、作業の迅速化や省力化が可能です。またAWS Auto Scalingと連携したスケーラビリティや、AZを跨いだ可用性の確保時にも非常に有効な手段となります。
ただし、オンプレ環境から単純リフトして構築したEC2(Windows)は、複製する際に多くの考慮点が必要です。WindowsOS特有の識別子であるSIDの重複を避けるため、Sysprepによる初期化が必要ですが、それに伴い単純な複製だけではない追加作業が発生します。
本記事では複製の流れとともに留意点を解説します。

全体的な流れ

  1. 本番環境のEC2で複製のための事前準備を実施する
  2. 本番環境のEC2からAMI(本番運用AMIと呼ぶ)を作成する
  3. 本番運用AMIから複製用インスタンスを作業用VPCで起動する
  4. 複製用インスタンスでSysprepを実行して、EC2を停止する
  5. 複製用インスタンスからAMI(複製用AMIと呼ぶ)を作成する
  6. 複製用AMIからEC2インスタンスを起動する

AMI作成⇒インスタンス起動を2段階実施する理由について

WindowsOSのEC2を複製するためのマスターイメージは、Sysprepを実行する必要があります。Sysprepはシステムのプロパティの初期化を実行します。複製元のEC2にSysprepを実行すると、複製元のインスタンスの設定が初期化されてしまいますので、初期化されても問題のない複製用のEC2をいったん作成する必要があります。この複製用インスタンスにSysprepを実行して、EC2の複製を実施することになります。

本番環境のEC2で複製のための事前準備を実施する

EC2を停止してイメージを作成することになりますが、停止前に以下を考慮し、必要に応じて対策を実施する必要があります。

  • 作業用のローカルユーザの追加
    ActiveDirectoryなどを利用していて、ローカルユーザが無効となっている場合は、後続のOS上での作業のためにローカルユーザを追加します。
  • OSのファイアウォール停止
    後続作業では別環境で操作するため、念のためOSのファイアウォールを停止しておきます。
  • ジョブの停止
    作業中に想定外の処理が発生しないように、ジョブを停止しておきます。

本番環境のEC2から本番運用AMIを作成する

インスタンスを停止して、完全に停止したことを確認してAMIを作成します。

本番運用AMIから複製用インスタンスインスタンスを起動する

本番環境とは異なる、作業用VPCで複製用インスタンスを起動します。
作業用VPCは複製元のEC2のOS上でIPを固定している可能性があるため、同じ状況を再現するために本番環境と同じネットワーク体系が望ましいです。
本番環境とは異なるVPCを利用する理由は以下の通りです。

  • ActiveDirectoryに参加している場合、SID重複で障害の可能性
  • 作業ミスが発生した際の本番環境への影響の低減

なお、作業で利用するVPCはインターネットへの接続は不要であるため、エンドポイントを利用してSSMなどのAWSサービスを利用します。

複製用インスタンスでSysprepを実行して、EC2を停止する

フリートマネージャーのリモートデスクトップサービスなどを利用して、事前に準備した作業用のローカルユーザでOSに接続してSysprepを実行します。
SysprepはデスクトップアプリのEC2LaunchSettingsから実行可能です。

複製用インスタンスから複製用AMIを作成する

前手順でSysprepを実行するとEC2が停止します。インスタンスが完全に停止した状態でAMIを作成します。

複製用AMIからEC2インスタンスを起動する

元のVPCでEC2インスタンスを起動します。
タイムゾーンやホスト名など、Sysprepでリセットされた設定があるため、新たに設定します。
また、複製前に設定を変更したOSのファイアウォールや、作業用のローカルユーザの無効化、ジョブの有効化等、複製したEC2の用途に応じて再度設定します。

おわりに

EC2(Windows)の複製についてご紹介しましたが、いかがでしたでしょうか。
EC2(Linux)と比較して複雑な手順が必要ですが、マスターイメージを作成できれば大量のEC2の構築作業が効率化可能です。AutoScalingを実現する場合にはSysprepによるマスターイメージの作成が必須ですので、ぜひお試しください。

最後までお読みいただき、ありがとうございました。

このページの先頭へ