あるAWSアカウントで作成したEC2インスタンスを別のAWSアカウントに移行する際の手順です。
LinuxベースのEC2はEC2のイメージ(AMI)を移行すればそこから起動して完了しますが、
WindowsベースのEC2は移行後、Windowsサーバ特有のSysprepの操作が必要になります。
今回はLinuxs、Windowsそれぞれどのように移行すればよいか、移行手順を具体的に紹介します。
移行の流れ
LinuxベースのEC2の場合
LinuxベースのEC2の移行の流れは以下のようになります。
AWSのEC2イメージ共有機能を使うだけなので非常にシンプルです。
- 【移行元】のAWSアカウントで、EC2のイメージ(AMI)を作成する
- 【移行元】のAWSアカウントで、AMIを移行先のAWSアカウントに共有する
- 【移行先】のAWSアカウントで、共有されたAMIからEC2を作成する
WindowsベースのEC2の場合
WindowsベースのEC2の移行の流れは以下のようになります。
Linuxの移行手順に追加で「パスワード再設定用にSysprepによる操作」、「AMIの再作成」、「EC2の再作成」が必要になります。
- 【移行元】のAWSアカウントで、EC2のイメージ(AMI)を作成する
- 【移行元】のAWSアカウントで、AMIを移行先のAWSアカウントに共有する
- 【移行先】のAWSアカウントで、共有されたAMIからEC2を作成する
- 【移行先】のAWSアカウントで、作成したEC2にログインしてSysprepを実行する
- 【移行先】のAWSアカウントで、Sysprepを実行したEC2のAMIを作成する
- 【移行先】のAWSアカウントで、作成したAMIから再度EC2を作成する
LinuxベースのEC2の移行手順
それでは、それぞれの詳細な手順を紹介します。
それぞれの作業ごとに記事を折りたたんであるため、各作業をクリックして手順を参照してみてください。
移行するEC2のイメージを作成していきます。
対象のEC2は「停止」した状態にしてください。
EC2コンソールの「インスタンス」タブで対象のEC2を選択し、「アクション」の「イメージとテンプレート」から「イメージの作成」をクリックします。
イメージを作成画面では「イメージ名」「イメージの説明」を入力し、「イメージの作成」をクリックします。
ボリュームのサイズなどは元の情報が入力されているので特に変更する必要はありません。
EC2コンソールの「AMI」タブからAMIの作成状況を確認します。
ステータスが「pending」から「avarable」になればAMIの作成が完了です。
作成したAMIを移行先のAWSアカウントに共有します。
EC2コンソールの「AMI」タブで作成したAMIを選択し、「アクション」の「イメージパーミッションの変更」をクリックします。
イメージパーミッションの変更では、移行先のAWSアカウント番号を調べて入力します。
移行先のAWSアカウント番号はAWSコンソールに右上に出ているアカウント名をクリックすると、マイアカウントの横に表示されています。
移行先のAWSアカウント番号を調べて入力したのち、「アクセス許可の追加」をクリックし、「パーミッションを作成するときは関連付けられるスナップショットに”ボリューム作成”パーミッションを追加する」にチェックをつけ、「保存」をクリックします。
ここまでで、移行先にAMIが共有できているので、共有されたAMIを確認していきます。
EC2コンソールの「AMI」タブで「プライベートイメージ」を選択すると、共有されたAMIが確認できるはずです。
確認出来たら、共有されたAMIを選択し、「起動」ボタンをクリックします。
起動ボタンを押した後は通常のEC2と同じようにインスタンスを作成すれば問題ありません。
以上でLinuxベースのインスタンスについては、アカウント間の移行が完了となります。
移行したEC2を立ち上げて、「ログイン」したり「内部のデータを確認」するなどして、無事移行ができているか確認してみてください。
確認後は、移行元のEC2を削除してよいかと思います。
WindowsベースのEC2の移行手順
WindowsベースのEC2についても移行手順を紹介していきます。
「【移行元】のAWSアカウントで、EC2のイメージ(AMI)を作成する」、「【移行元】のAWSアカウントで、AMIを移行先のAWSアカウントに共有する」、「【移行先】のAWSアカウントで、共有されたAMIからEC2を作成する」については上記のLinuxベースの手順と全く同じです。
移行するEC2のイメージを作成していきます。
対象のEC2は「停止」した状態にしてください。
EC2コンソールの「インスタンス」タブで対象のEC2を選択し、「アクション」の「イメージとテンプレート」から「イメージの作成」をクリックします。
イメージを作成画面では「イメージ名」「イメージの説明」を入力し、「イメージの作成」をクリックします。
ボリュームのサイズなどは元の情報が入力されているので特に変更する必要はありません。
EC2コンソールの「AMI」タブからAMIの作成状況を確認します。
ステータスが「pending」から「avarable」になればAMIの作成が完了です。
作成したAMIを移行先のAWSアカウントに共有します。
EC2コンソールの「AMI」タブで作成したAMIを選択し、「アクション」の「イメージパーミッションの変更」をクリックします。
イメージパーミッションの変更では、移行先のAWSアカウント番号を調べて入力します。
移行先のAWSアカウント番号はAWSコンソールに右上に出ているアカウント名をクリックすると、マイアカウントの横に表示されています。
移行先のAWSアカウント番号を調べて入力したのち、「アクセス許可の追加」をクリックし、「パーミッションを作成するときは関連付けられるスナップショットに”ボリューム作成”パーミッションを追加する」にチェックをつけ、「保存」をクリックします。
ここまでで、移行先にAMIが共有できているので、共有されたAMIを確認していきます。
EC2コンソールの「AMI」タブで「プライベートイメージ」を選択すると、共有されたAMIが確認できるはずです。
確認出来たら、共有されたAMIを選択し、「起動」ボタンをクリックします。
起動ボタンを押した後は通常のEC2と同じようにインスタンスを作成すれば問題ありません。
ここまでで、移行先のAWSアカウントでEC2インスタンスを動かすところまで行ったのですが、このままではパスワードが依然のEC2に依存している状態となっています。
どういうことかと言うと、以下のようにEC2にリモートデスクトップで接続するために、「パスワードの取得」ボタンを押すと「パスワードは使用できません。」と表示されてしまうのです。
実は、リモートデスクトップで接続するためのパスワードは移行前と全く同じになっており、【移行元】のコンソール画面からしか取得できない状態なのです。
このような状況を修正し、コンソール画面で上記の流れでパスワードを取得できるようにするために、以下の手順を実施します。
【移行元】のアカウントでEC2へのログイン情報を確認し、以下のようにリモートデスクトップで接続します。
- 【移行先】のIPアドレス
- 【移行元】のWindowsアカウント、パスワード
リモートデスクトップで接続出来たら、「Windows」マークをクリックし、「Ec2LaunchSettings」を実行します。
Ec2LaunchSettingsではAdministrator Passwordを「Random」にして「Shutdown with Sysprep」をクリックします。
Sysprep Comfirmationが表示されますが、「Yes」をクリックすれば大丈夫です。すると、Sysprep is working…となり数分後インスタンスが停止します。
Sysprepを実行したので、このままEC2を立ち上げればいいと思いきや、このまま立ち上げても以下のように状況は変わっていません。
(起動しようとしてもうまく起動しない場合もあります。)
Sysprepを実行したEC2イメージから新しいEC2インスタンスを立ち上げる必要があるのです。
ということで「【移行元】のAWSアカウントで、EC2のイメージ(AMI)を作成する」と同様の手順で、Sysprepを実行したEC2のAMIを作成します。
「【移行先】のAWSアカウントで、共有されたAMIからEC2を作成する」と同様の手順でSysprepを実行したAMIからEC2を立ち上げます。
ここまで実施したら、パスワードが取得できるようになっているか確認してみます。
EC2コンソールで対象のEC2インスタンスを選択し「接続」の「RDPクライアント」から「パスワードを取得」をクリックしてみると、今度はキーペアからパスワードを取得できるようになっていることがわかります。
以上でWindowsベースのインスタンスについては、アカウント間の移行が完了となります。
移行したEC2を立ち上げて、「ログイン」したり「内部のデータを確認」するなどして、無事移行ができているか確認してみてください。
確認後は、移行元のEC2を削除してよいかと思います。