これはなに
お客様より、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の仕様など知らなかったことも学ぶいい機会になりました。
ご参考になれば幸いです。