見出し画像

AWS EC2のアカウント間引っ越し

AWSのサービスを丸ごと別のアカウントに引っ越すのは、アカウントを付け替えればいいだけなので楽ちんなのですが、一部サービスのみ別のアカウントに引っ越したい場合は少し難儀です。今回、ec2インスタンスを別のアカウントに引っ越す必要があるので、そのやり方を記録しておきます。

移行手順

移行元のインスタンスの停止

EC2のインスタンス管理画面から「インスタンスの状態」 > 「インスタンスを停止」

移行元インスタンスのAMI(イメージ)作成

「アクション」> 「イメージとテンプレート」 > 「イメージを作成」
「イメージ名」と「イメージの説明」を入力し、作成します。
「ステータス」が「利用可能」になるのを待ちます。

AMIの共有

AMIを移行先のアカウントに共有します。

「アクション」 > 「AMI許可を編集」
「アカウントIDを追加」ボタンを押します。
移行先の「アカウントID」を入力し「AMIを共有」ボタンを押します。
「変更を保存」で共有完了です。

共有先でAMIからインスタンスを作成する

移行先のEC2の「AMI」管理画面からAMIの一覧で「プライベートイメージ」を表示します。関係ないものが出てきたりするので、フィルターでAMI IDを指定して絞り込みます。
「イメージからインスタンスを起動」します。
インスタンスの作成画面に移りますので、ステップに従って作成します。
(ここでは作成のステップは省略します。)

※セキュリティグループも移行元と同じように設定します。
※キーペアは新たに作成しました。これはec2-userのものです。(ユーザごとに追加で作成した鍵は、移行元のキーがそのまま使えました。)

作成中となりました。
無事起動したようです。

固定IPを付与する

「Elastic IP」管理画面から「Elastic IPアドレスを割り当てる」ボタン
Elastic IPの一覧で作成したIPを選択し、「アクション」 > 「Elastic IP アドレスの関連付け」で、インスタンスに、先ほど移行したインスタンスを設定し「関連付ける」ボタンを押します。

移行先のサーバーにログインしてみる

SSHソフトで移行先のサーバーに新しい固定IPアドレスと、移行元と同じユーザ名・パスワード・鍵でログインしてみたところ、ログインできました!ちなみにインスタンス作成時に作ったキーペアではログインできませんでした。(何故なのか、誰か教えてください。)

ログイン成功

ドメインを、移行元から移行先に付け替える

ドメインのDNS管理でAレコードを新しい固定IPへ向けました。

ブラウザから接続確認

移行元インスタンスは停止中なので、既存のドメインでアクセスしてサイトが表示されればOKです。

最後にAMIを消しましょう

AMIに利用しているスナップショットの容量で費用がかかってしまうので不要ならAMIと関連するスナップショットを消しましょう。スナップショットの「説明」欄に、関連づいているAMIのIDが記載されていますので、AMIのIDでフィルターして削除します。

AMIの管理画面
AMIの解除
スナップショットの削除

まとめ

AMIを作成して簡単にAWSユーザ間を移動できました。開発したウェブサイトを、お客様のIDに移したりするのに便利かもしれません。
以下、気になったメモです。

移行元のキーペアが使えるのは何故?

インスタンス作成時のキーペアはec2-userのもので、移行元環境ではec2-userは利用せず、ほかのユーザを作成していたので、そのユーザについてはそのまま鍵が利用できます。
根本的にAWSのキーペアについて理解できていませんでしたので今回改めて詳しくキーペアについて確認しました。ec2-user用のキーペアはインスタンスに紐づきますが、追加のキーペアについては単に鍵作成ツールとして利用しているだけでインスタンスに紐づける機能はありません。追加の鍵はAWSのキーペア作成でつくってもいいし、他のツール(PuTTygen等)で作ってもよいもので、AWSコンソール上で管理しません。自分で各ユーザの~/.ssh/authorized_keys ディレクトリに配布します。ですのでAWS上でキーを削除してもec2-user以外のログインには影響がありません。

SSL証明書は引き継がれるか?(let's encrypt)

Let’s Encryptでワイルドカード証明書をインストールしていますが、そちらは問題なく使うことができました。

この記事が気に入ったらサポートをしてみませんか?