はじめに
こんにちは。BFT名古屋支店のマッチです。今回はあるAWSアカウント上で構築したEC2インスタンスを別のアカウントに移行(コピー)する手順について紹介します。
概要
今回実施する手順を簡潔にまとめると以下のようになります。
- カスタマー管理型キー(CMK)を作成する。
- AMIを作成し、CMKで再暗号化する。
- アカウント間でAMIを共有し、移行先でAMIからインスタンスを起動する。
移行元のアカウントでの作業
CMKの作成
AWSマネージド型キーで暗号化されたEBSを含むEC2インスタンスはキーポリシーをカスタマイズすることができないため、アカウント間で移行する際には再暗号化のためのカスタマー管理型キー(CMK)を作成する必要があります。
AWSマネジメントコンソールから[Key Managemet Service] - [カスタマー管理型のキー]を開き、[キーの作成]をクリックする。
「キーを設定」の画面で既定値のまま[次へ]をクリックする。
「ラベルを追加」の画面でエイリアスを設定し、[次へ]をクリックする。
「キーの管理アクセス許可を定義」の画面でキー管理者を設定し、[次へ]をクリックする。
「キーの使用アクセス許可を定義」の画面でKMSキーを使用できるユーザーを設定する。
「確認」の画面でキーポリシーに以下のポリシーを追加し、[完了]をクリックする。
{ "Sid": "Allow use of the key with target account", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<移行先のアカウントのID>:user/<移行先のアカウントのユーザー>" }, "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:ReEncryptFrom" ], "Resource": "*" }
※作成したCMKは移行先でインスタンスの作成が完了するまで削除または無効化しないでください。
AMIイメージの作成
移行対象のインスタンスのAMIを作成し、再暗号化のために作成したAMIをコピーします。
AWSマネジメントコンソールから[EC2] - [インスタンス]を開き、対象のインスタンスを選択して[アクション] - [イメージとテンプレート] - [イメージを作成]をクリックする。
イメージ名を入力し、[イメージを作成]をクリックする。
[EC2] - [AMI]から作成したAMIを選択し、[アクション] - [AMIのコピー]をクリックする。
「送信先リージョン」を選択し、「ターゲットEBSスナップショットの暗号化」にチェックを入れてマスターキーに先程作成したCMKを選択して[AMIのコピー]をクリックする。
AMIを共有する
コピーしたAMIを移行先のアカウントと共有します。
コピーしたAMIを選択し、[アクション] - [イメージパーミッションの変更]をクリックする。
「AWSアカウント番号」に移行先のAWSアカウントIDを入力し、[アクセス許可の追加]をクリックし、「パーミッションを作成するときは次の関連付けられたスナップショットに "ボリューム作成" パーミッションを追加する」にチェックを入れて[保存]をクリックする。
移行先のアカウントでの作業
AMIの起動
移行元アカウントから共有したAMIを移行先で起動します。
Windowsのライセンス認証
Windows Server 2016以降の場合、インスタンスの作成後にライセンスの認証を行う必要があります。
作成したWindows Serverにアクセスし、PowerShellを起動する。
以下のコマンドを実行する。
PS C:>Import-Module "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1" PS C:>Add-Routes PS C:>Set-ActivationSettings PS C:>slmgr /ato
まとめ
以上がAWSアカウント間でEC2インスタンスを移行する手順になります。ポイントとしては、暗号化されたEBSを含むインスタンスを移行する際はCMKによる再暗号化が必要な点とWindows Serverの場合はライセンス認証が必要な点です。今回紹介した手順は検証環境で構築したインスタンスを基に本番環境を構築する際などに役立つかと思われます。