EC2インスタンスリージョン間移行(Windows編)

Windowsインスタンスもリージョン間移行してみた。
多少強引ではあるが、C:ドライブを付け替えてしまうというアプローチです。非公式かつ無保証なので注意!

前提条件

概念図

準備

移行対象のWindowsには、administratorと別のadmin権限アカウントをつくっておくとよいかもしれない。
Linux編を参考にインスタンス間でssh接続ができるように、Security Groupやssh鍵の設定を済ませておく。
もし作業をAmazon Linux AMIで行う場合には、UNIXのdiskグループにec2-userなどログインに使うユーザを加えておくとよい。

イメージのコピー

AMIに紐づいているsnapshotをボリューム化し、移行元リージョンのLinuxインスタンスにアタッチする。
もしくは稼働中のインスタンスをstopし、ボリュームのアタッチ先を変えてもよい。
移行先に移行元と同容量(もしくは後からexpandする前提で大きめのサイズ)のボリュームを作成し、アタッチする。
移行元、移行先ともに/dev/sdgにアタッチしている場合は、下記のようなコマンドでネットワーク間コピーができる。

ec2-user@src $ dd if=/dev/sdg | gzip -c1 | ssh ec2-user@<DST_IP> "gzip -dc > /dev/sdg"

インスタンスの起動

移行先リージョンで、元のインスタンスと同じバージョンのWindowsインスタンスを起動する。root deviceのタイプとi386/x86_64に注意。
パスワードが得られる状態になったら、stopしておく。

rootボリュームの付け替え

  • /dev/sda1としてマウントされてるボリュームを外す
  • 先ほどコピーしたボリュームを/dev/sda1としてアタッチする

インスタンスを起動

インスタンスをstartさせると、先ほどコピーしたボリュームから立ち上がるはず。
動作が確認できたら、AMI化しておくとよい。