BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】AWSアカウント間でEC2インスタンスをコピーする

はじめに


こんにちは。BFT名古屋支店のマッチです。今回はあるAWSアカウント上で構築したEC2インスタンスを別のアカウントに移行(コピー)する手順について紹介します。

概要


今回実施する手順を簡潔にまとめると以下のようになります。

  • カスタマー管理型キー(CMK)を作成する。
  • AMIを作成し、CMKで再暗号化する。
  • アカウント間でAMIを共有し、移行先でAMIからインスタンスを起動する。

f:id:bftnagoya:20211013155630p:plain

移行元のアカウントでの作業


CMKの作成

AWSマネージド型キーで暗号化されたEBSを含むEC2インスタンスはキーポリシーをカスタマイズすることができないため、アカウント間で移行する際には再暗号化のためのカスタマー管理型キー(CMK)を作成する必要があります。

  1. AWSマネジメントコンソールから[Key Managemet Service] - [カスタマー管理型のキー]を開き、[キーの作成]をクリックする。

  2. 「キーを設定」の画面で既定値のまま[次へ]をクリックする。

  3. 「ラベルを追加」の画面でエイリアスを設定し、[次へ]をクリックする。

  4. 「キーの管理アクセス許可を定義」の画面でキー管理者を設定し、[次へ]をクリックする。

  5. 「キーの使用アクセス許可を定義」の画面でKMSキーを使用できるユーザーを設定する。

  6. 「確認」の画面でキーポリシーに以下のポリシーを追加し、[完了]をクリックする。

{
    "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をコピーします。

  1. AWSマネジメントコンソールから[EC2] - [インスタンス]を開き、対象のインスタンスを選択して[アクション] - [イメージとテンプレート] - [イメージを作成]をクリックする。

  2. イメージ名を入力し、[イメージを作成]をクリックする。

  3. [EC2] - [AMI]から作成したAMIを選択し、[アクション] - [AMIのコピー]をクリックする。

  4. 送信先リージョン」を選択し、「ターゲットEBSスナップショットの暗号化」にチェックを入れてマスターキーに先程作成したCMKを選択して[AMIのコピー]をクリックする。

AMIを共有する

コピーしたAMIを移行先のアカウントと共有します。

  1. コピーしたAMIを選択し、[アクション] - [イメージパーミッションの変更]をクリックする。

  2. AWSアカウント番号」に移行先のAWSアカウントIDを入力し、[アクセス許可の追加]をクリックし、「パーミッションを作成するときは次の関連付けられたスナップショットに "ボリューム作成" パーミッションを追加する」にチェックを入れて[保存]をクリックする。

移行先のアカウントでの作業


AMIの起動

移行元アカウントから共有したAMIを移行先で起動します。

  1. AWSマネジメントコンソールから[EC2] - [AMI]を開き、「プライベートイメージ」から対象のAMIを選択して[起動]をクリックする。

  2. EC2の各パラメータを設定し、インスタンスを作成する。

Windowsのライセンス認証

Windows Server 2016以降の場合、インスタンスの作成後にライセンスの認証を行う必要があります。

  1. 作成したWindows Serverにアクセスし、PowerShellを起動する。

  2. 以下のコマンドを実行する。

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の場合はライセンス認証が必要な点です。今回紹介した手順は検証環境で構築したインスタンスを基に本番環境を構築する際などに役立つかと思われます。

参考


Amazon EC2 インスタンスをコピーする

CMK暗号されたAMIをクロスアカウント共有してみた | DevelopersIO

EC2 Windows インスタンスでの Windows のライセンス認証の失敗を解決する