起動済み EC2 インスタンスのパブリックIPv4アドレスを削除する方法を教えてください

既存 EC2 に付与されたパブリックIPv4アドレスを、インスタンスの再起動などを伴わずに削除する方法をご紹介します
2024.01.18

困っていた内容

2024年2月からパブリックIPv4アドレスが有償化されることに伴い、すでに稼働している EC2 インスタンスのパブリックIPv4アドレスを削除して、プライベートサブネットに移行することを考えています。実現する方法を教えてください。

どう対応すればいいの?

すでに起動済みの EC2 インスタンスからパブリックIPv4アドレスを削除したい場合、以下の手順で実現できます。

  1. 対象 EC2 インスタンスに追加のネットワークインターフェイス(ENI)をアタッチする
  2. 対象 EC2 インスタンスのプライマリ ENI に対して Elastic IP アドレスを関連付けする
  3. Elastic IP アドレスの関連付けを解除すると、プライマリ ENI のパブリックIPv4アドレスが削除される
  4. 追加した ENI は不要になるためデタッチする

やってみた

実際に試してみました。
ここではパブリックIPv4アドレスが付与された EC2 インスタンスが、すでにパブリックサブネット上に起動している前提で進めます。

まずは EC2 インスタンスと同じサブネットに、新規でネットワークインターフェイス(ENI)を作成します。
(このENIはあとで不要になるため、IPアドレスは適当でOKです)

作成した ENI を対象 EC2 インスタンスにアタッチします。

対象 EC2 インスタンスにプライベートIPv4アドレスが2つ付与された状態になります。
この時点ではまだパブリックIPv4アドレスが付いていることも確認します。

続いて Elastic IP アドレスを用意し、EC2 インスタンスのプライマリ ENI に関連付けます。
(後から追加した ENI ではなく、プライマリ ENI に関連付けることに注意しましょう)

関連付けた Elastic IP アドレスを、すぐに関連付け解除します。

再度 EC2 インスタンスの設定を確認します。
すると EC2 インスタンスの再起動や停止を伴なわず、パブリックIPv4アドレスが削除されていることを確認できました!

このあとは追加でアタッチしたENIが不要になるため、デタッチします。

また必要に応じて Elastic IP アドレスの解放や、EC2 インスタンスが稼働しているのサブネットのルートテーブルを変更し、プライベートサブネットに変更するなどの対応を適宜行います。

注意事項

筆者の検証時には特に問題は発生しませんでしたが、実働環境で EC2 のパブリックIPv4アドレスを削除すると、アプリケーションの動作や周囲のネットワーク環境等に影響を及ぼす可能性もあります。
実施する際には、必ず充分な検証を行うことをお勧めします。

参考資料

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。