初学者向け：AWS Elastic IPの基本と課金の仕組みを体系的にまとめて実際に使ってみた

## はじめに

Elastic IPアドレス（EIP）は、AWSが提供する静的なIPv4アドレスで、主にEC2インスタンスに関連付けて使用されるリソースです。

:::note alert
**Elastic IPは、高可用性や柔軟性を求めるシステムにおいて重要な役割を果たします。
※しかし、適切に管理しないと不要なコストが発生する可能性があるため、注意が必要です。**
:::

この記事では、自分自身の備忘録としてElastic IPに関する知識を体系的に整理しています。***この内容が、どなたかの技術の支えになれば幸いです！***

## 書こうと思ったきっかけ
AWSを勉強し始めた頃、Elastic IPアドレスについては、それなりに苦戦しながら覚えた記憶があります。

これから学ぼうとする方にとっても、Elastic IPアドレスの知識は簡単に身につけられるものではないと感じています...。

:::note warn
***特に、AWSのIPアドレスやネットワーク周りについては、クラウドの知識だけでなく、ネットワークの基礎知識も必要になるため、挫折する人も多いのではないかと思っています。***
:::

また、以前から感じていた***Elastic IPの課金の仕組みが非常に理にかなっていて面白い***と感じたので、この機会に紹介したいと思いました。

## Elastic IPアドレスの特徴

ここでは、Elastic IPアドレスの重要な特徴を簡単に整理します。

:::note info
***詳しい情報については、AWS公式ドキュメントをご参照ください。***
:::

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html

### 1. 静的なIPアドレス
- **Elastic IP**は固定されたIPアドレスで、インスタンスの再起動や障害が発生しても変更されません。
- 一方、**動的IP（デフォルトのパブリックIP）** は、インスタンスの停止や再起動によって変更されます。

---

### 2. 動的な再関連付け
- Elastic IPは、別のインスタンスに再関連付けすることが可能です。
- 例えば、障害発生時にElastic IPを新しいインスタンスに割り当てることで、同じIPアドレスを使用してサービスを継続できます。

---

### 3. 課金に関する注意点
- Elastic IPを割り当てたインスタンスが停止または削除され、**Elastic IPが未使用の場合**は課金が発生します。
- 一方、使用中のElastic IPには課金は発生しません（**無料枠の条件内の場合**）。


## Elastic IPアドレスの使用例

***普段の技術検証では、IPアドレスを固定する用途はあまりありませんが、以下に代表的な使用例を挙げてみます。***

### 冗長性の確保:
サーバー障害時に、Elastic IPを新しいインスタンスに迅速に関連付けることで、ダウンタイムを最小限に抑えることができます。

### 固定IPが必要なアプリケーション:
外部システムやクライアントが特定のIPアドレスで接続する必要がある場合に便利です。

https://blog.denet.co.jp/ec2-privateip-takeover/

## 実際に使ってみた
ここでは、過去の記事で紹介したTerraformを使用し、シンプルなネットワーク構成を基にEC2インスタンスを1台構築し、Elastic IPの技術検証を行います。

***EC2インスタンスさえあれば問題ありませんが、詳しい手順が気になる方は、以下の記事を参考にしてください。***

https://qiita.com/free-honda/items/7770f57db0b9e619cfb4

### 1. Elastic IPの割り当て

サービス一覧から「EC2」を選択し、EC2ダッシュボードを表示します。

![Screenshot 2025-01-08 at 8.58.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/d53fb585-763b-8673-753a-a894557343a1.png)

左側メニューの「Elastic IP」をクリックし、「Elastic IPアドレスの割り当て」を選択します。

![Screenshot 2025-01-08 at 8.59.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/31faeb0a-a047-abf4-1a76-bc7e0e94f365.png)

「Elastic IPアドレスの設定」でデフォルトリージョンを確認し、「ネットワークボーダーグループ」では、ご自身のアベイラビリティーゾーンを選択してください。

![Screenshot 2025-01-08 at 9.01.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/81377ada-435f-b436-2c0a-96a2063796c1.png)

割り当てが完了すると、新しく作成されたElastic IPアドレスが一覧に表示されます。

![Screenshot 2025-01-08 at 9.03.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/90ae561c-759b-0af6-4217-3b8b32b23ed9.png)

### 2. Elastic IPをEC2インスタンスに関連付け

左側メニューの「インスタンス」をクリックし、対象のインスタンスを選択します。***必要に応じて、インスタンスIDをメモしておくと便利です。***

![Screenshot 2025-01-08 at 9.25.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/54be29bd-b3ce-573b-0b7f-49b96e1906e6.png)


再び「Elastic IP」メニューに戻り、作成済みのElastic IPを選択します。「アクション」メニューから「Elastic IPアドレスの関連付ける」をクリックします。

![Screenshot 2025-01-08 at 9.03.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/5bd37425-af84-3a8f-9185-b6d278c9c827.png)

表示される設定画面で、「インスタンス」フィールドに関連付けたいインスタンスを選択します。

![Screenshot 2025-01-08 at 9.04.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/9f734799-63f3-8034-38fa-2835f033e483.png)


必要に応じてプライベートIPアドレスを指定します（通常は自動選択で問題ありません）。***「関連付ける」をクリックして設定を完了します。***

![Screenshot 2025-01-08 at 9.27.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/c88d3000-1565-e19e-b368-92eba354403d.png)

:::note warn
***実際に作成されたElastic IPアドレスをブラウザに入力してアクセスすると、ウェブページが想定通りに表示されていることを確認できます。大成功ですね！***
:::

### 3. Elastic IPの解放（不要時）

Elastic IPメニューから使用中のElastic IPを選択します。「アクション」メニューで「Elastic IPアドレスの関連付け解除」をクリックします。

![Screenshot 2025-01-08 at 9.28.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/dc68a890-ed44-118f-926c-f8275b9f6295.png)


「アクション」メニューから「Elastic IPアドレスの解放」を選択します。解放が完了すると、該当のElastic IPがリストから削除されます。

![Screenshot 2025-01-08 at 9.29.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/538c72b2-4607-4513-0849-c73e3638790f.png)

***Elastic IPが無事に解放され、課金によるコストを防ぐことができます。***

![Screenshot 2025-01-08 at 9.29.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/4bf87bfe-7422-537a-7d6b-de05fda61dba.png)

## まとめ

最後まで読んでいただきありがとうございました。***今回は基本的な内容でしたが、自分の備忘録として整理し、技術検証まで行うことができたので有意義だったと思います。***

正直、ALB（Application Load Balancer）などを利用する機会が増えているため、Elastic IPを使う場面は少なくなっていますが、必要な場面では積極的に活用していきたいと思います。

## おまけ：Elastic IPの課金の仕組み
Elastic IPの課金ルールは、少し不思議に感じるかもしれません...。***AWSでは、Elastic IPをインスタンスに関連付けて使用している場合は課金されませんが、未使用の状態では課金が発生します。***

### なぜ未使用だと課金されるのか？
これは、AWSが限られたIPv4アドレスを効率的に管理するための仕組みです。

:::note alert
***IPv4アドレスは有限なリソースであり、ユーザーが必要以上に保持してしまうと、他の利用者が使えなくなる可能性があります。***
:::


そのため、AWSは以下の目的で未使用のElastic IPに課金を設定しています：

- **IPv4アドレスの効率的な管理**  
  使われていないアドレスが占有され続けるのを防ぐことで、限られたリソースを効率的に活用します。

- **不要なリソースの解放を促す**  
  未使用のElastic IPを解放させることで、他のユーザーやサービスがそのリソースを利用できるようにします。

- **インフラ運用コストのカバー**  
  Elastic IPの維持にかかる運用コストを補填する仕組みです。


***また、1つのアカウントで保持できるElastic IPはデフォルトで5つまでという制限があります。この制限を超える場合は特別な対応が必要です。***

https://qiita.com/miriwo/items/ad23293c359b8d8afc82#:~:text=AWS%E3%81%AEElastic%20IP%E5%8F%96%E5%BE%97,%E3%81%AB%EF%BC%95%E5%80%8B%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82

## 参考記事

https://dev.classmethod.jp/articles/how-to-link-eip-to-ec2-instance-jp

https://dev.classmethod.jp/articles/recovering-an-elastic-ip-address

https://qiita.com/t-yama-3/items/6f1637d9ee17f86f1c9b