
こんにちは。ささのです。
EC2で動いているWindowsServer(EBS暗号化済み)をコピーして、別のアカウントで立ち上げたいときってありますよね?
ありますよね!?(私はありました。そして2~3ハマりました。)
「AMIつくって、AMI共有して、AMIから起動すればきっといけるでしょ!余裕だな!」とか思ってたらそう簡単にはいかなかったので、実施した方法を説明していきます。
ちなみにWindowsでない場合はこちらをどうぞ。
AWS Solutions Architect ブログ: 暗号化されたEBSスナップショットを持つAMIを作成し他のアカウントやリージョンで共有する方法
Note: この記事は、Windows AMIやbillingProduct codeを持つAWS マーケットプレイスからの他のAMIには適用できません。
TL;DR
source account(共有元)
- EBSからスナップショットを作成する
- カスタマー管理型の鍵を作成する
- 作成した鍵に変更してスナップショットのコピーを作成する
- 鍵を変更したスナップショットを共有する
target account(共有先)
- カスタマー管理型の鍵を作成する
- 作成した鍵に変更して共有されたスナップショットのコピーを作成する
- 鍵を変更したスナップショットからボリュームをつくる
- 新規WindowsServerを作成して、ボリュームを入れ替える
環境
今回は下記の環境で行いました。
- 東京リージョン
- Windows Server 2012 R2 on EC2
- 暗号化されたEBSを使用
- 暗号化の鍵はデフォルトの
aws/ebs
手順
こちらの図(再掲)に沿って手順を説明します。
source account
まずは共有元アカウントでの作業となります。
1. 共有したいサーバのEBSのスナップショットを作成する
ボリュームを選択して右クリックからスナップショットの作成
を選択します。
必要に応じて説明
やタグ
を入力して、スナップショットの作成
を選択します。
ステータスがCompleted
になれば作成完了です。
2. KMSで data encryption key #1
を新規作成する
Key Management Serviceに移動して、キーの作成
を選択します。
エイリアス
と説明
を入力して、Next
を選択します。
タグ
を設定します。今回はNameを指定しておきました。
入力が完了したらNext
を選択します。
キーの管理者を指定します。
今回は自分を指定しておきましたが、必要に応じて他のユーザを指定してください。
指定したらNext
を選択します。
キーの使用者を指定します。
こちらも今回は自分を指定しておきました。必要に応じて他のユーザを指定してください。
ここで、別のAWSアカウント
に共有先のアカウントの追加を行います。
共有先のアカウントを追加しておかないと、コピー作成時にerrorとなり、コピーを作成することができません。
ポリシーが表示されるので、そのまま完了
を選択します。
カスタマーキーが作成され、一覧に表示されればOKです。
3. 新規作成した data encryption key #1
を使って、手順1で作成したsnapshotのコピーを作成する
スナップショットを選択して右クリックからコピー
を選択します。
マスターキーを先ほど作成したdata-encryption-key-1
に変更して、コピー
を選択します。
ステータスがCompleted
になれば作成完了です。
4. 手順3で作成したsnapshotを、共有先アカウントに共有する
スナップショットを選択して右クリックから権限の変更
を選択します。
共有先のAWSアカウント番号を入力して、アクセス許可の追加
→保存
と選択します。
target account
ここから先は共有先のアカウントでの作業となります。
5. KMSで data encryption key #2
を新規作成する
2. KMSで data encryption key #1 を新規作成する
と同様の手順で作成します。
また、別のAWSアカウント
を追加する必要はありません。
6. 手順5で作成した data encryption key #2
を使用して、手順4で共有されたsnapshotのコピーを作成する
3. 新規作成した data encryption key #1 を使って、手順1で作成したsnapshotのコピーを作成する
と同様の手順で作成します。
このとき、マスターキーを先ほど作成したdata-encryption-key-2
に変更します。
7. 手順6で作成したスナップショットから、EBSボリュームを作成する
スナップショットを選択して右クリックからボリュームの作成
を選択します。
iikanjiに設定して、ボリュームの作成
を選択します。
下記画面に遷移するので、ボリュームID
クリックして移動します。
作成したボリュームの状態がavailable
になればOKです。
8. 移行したいインスタンスと同じOSでEC2インスタンスを起動する
移行元のインスタンスと同じAMIでインスタンスを新規に起動します。
9. インスタンスを停止し、EBSボリュームをデタッチする
起動したインスタンスを一度停止させます。
停止させたインスタンスにアタッチされているボリュームを選択し、Detach Volume
をクリックしてデタッチします。
確認画面が表示されるので、デタッチする
を選択します。
10. インスタンスに、手順7で作成したEBSボリュームをアタッチする
手順7
で作成したボリュームを選択して右クリックからボリュームのアタッチ
を選択します。
アタッチするインスタンスを指定します。
また、デバイスはルートデバイスとしてアタッチするので/dev/sda1
にする必要があります。
11. インスタンスを起動する
停止しているインスタンスを起動させます。
右クリックからインスタンスの状態
→開始
を選択します。
12. 動作確認する
インスタンスが起動したらパプリックIPアドレスもしくはパブリックDNSを確認して、リモートデスクトップできればお引越し完了です!
(イメージ)
その他・Tipsとか
- ログインID/PWはコピー元インスタンスと同じものになります。AWSのコンソールからPWの確認しても正しいPWは表示されないので注意です。
- McAfee Agentなど外部と通信するものには注意しましょう。うっかり通信できてしまうと…
- ちなみにAMIを共有して起動したら接続できませんでした。
- このときプラットフォームが
OtherLinux
になっていましたが、詳しくはわからないです。。。
- このときプラットフォームが
さいごに
「LinuxだったらAMIつくってサッと共有できるのに…」とか「暗号化されてなけば…」とか思いながら
AWSの別アカウント間でWindowsServerをお引越しすることができました。
本番環境→本番環境での引っ越しとかだとPW変わったりしちゃってややイケてないですが、
今回は本番環境で動いているサーバを開発検証用のアカウントでちょこっと検証したかっただけなので良しとしました。
おわり。