これはなに

お客様より、EC2のプライベートIPを引き継いで、新EC2を作成して欲しいとの要望があったため検証してみました。

やりたいこと

プライベートIPがそれぞれ、

EC2_a→a.a.a.a
EC2_b→b.b.b.b

の時に

EC2_a→削除
EC2_b→a.a.a.a
(b.b.b.bは使わない)

の状態にします。

既に起動済みのEC2に対してはプライベートIPは引き継げません。
そのため、今回はAMIからデプロイする際にプライベートIPを指定する方法を紹介します。

やってみる

EC2それぞれのIPアドレス、eniを確認する

AMIを取得する

プライベートIPを引き継がれる側のEC2のAMIを取得します。

インスタンス削除時の動作を変更する

通常は、EC2削除と同時にeniも削除されてしまいます。
eniが削除されてしまうと面倒なので、同時に削除されないように設定を変更しておく必要があります。

EC2 > Network interfaces > 対象のeniを選択 > アクション > 終了時の動作を変更を押下

有効化のチェックを外して保存    ※eni IDはメモしておきましょう

引き継ぎ元のEC2を削除する

引き継ぎ先から取得したAMIを使ってEC2をデプロイする

この時、高度なネットワーク設定で、残しておいたeniを選択してください。

※この時、SGを選択していると以下のようなエラーが出るため、SGの選択を解除する必要があります。(eniを引き継ぐと、SGの情報も引き継いでしまうため)

この状態でインスタンスを起動します。

AMIから作成したEC2がIPを引き継げていることを確認する

問題なく作成できれば、新しく作成したEC2のプライベートIPが、引き継ぎ元のプライベートIPになっています。

おわりに

一旦インスタンスを削除する手間が少々面倒ではありますが、無事プライベートIPを引き継ぐことができました。

eniの仕様など知らなかったことも学ぶいい機会になりました。

ご参考になれば幸いです。