← ハンズオン一覧に戻る

AWS Hands-on / Compute

再起動しても変わらない IP アドレスをサーバーに付ける

EC2 のパブリック IP アドレスは、サーバーを停止して起動し直すたびに変わってしまいます。これを「Elastic IP アドレス」を使って固定し、停止・起動を繰り返しても同じアドレスでアクセスできる状態を作ります。固定アドレスの便利さと、放置すると課金されるという注意点の両方を体験します。

● Lv.2 基本的なリソースを作れる人 ⏱ 所要 30〜50 分 すべてコンソールで完結
01 — Prerequisites

はじめる前に

  • 必須AWS アカウントを持っていること
  • 必須マネジメントコンソールにサインインできること
  • あると良いEC2 インスタンスを一度起動したことがある(今回は確認用に 1 台起動しますが、起動の流れを知っていると進めやすいです)
  • あると良い「IP アドレス」がネットワーク上の住所のようなものだ、というイメージを持っている
  • あると良い「パブリック IP」と「プライベート IP」という言葉を聞いたことがある(本文でも触れます)

※ このハンズオンは すべてコンソールだけで完結します。サーバーへのログイン(SSH)は使いません。アドレスが変わる/変わらないは、すべてコンソールの画面上で確認できます。

02 — References

参照する公式ドキュメント

手順に迷ったときや、用語の意味を確かめたいときに開きましょう。

※ リンク切れの場合は、ページタイトルで検索してください。

03 — Background

背景・シナリオ

EC2 インスタンスを起動すると、インターネットからアクセスするためのパブリック IP アドレスが自動で割り当てられます。とても便利な仕組みですが、ひとつ落とし穴があります。サーバーを停止して起動し直すと、このパブリック IP アドレスは別のものに変わってしまうのです。

アドレスが変わると、ブラウザのお気に入りに登録した接続先や、誰かに伝えたアクセス先が、ある日突然つながらなくなってしまいます。そこで使うのが Elastic IP アドレスです。これは AWS が用意する「固定の public IPv4 アドレス」で、インスタンスに関連付けておくと、停止・起動を繰り返しても同じアドレスを使い続けられます

どうして普通のパブリック IP は変わってしまうの?

自動で割り当てられるパブリック IP は、AWS が持つアドレスの「貸し出しプール」から、起動のたびに空いているものを一時的に借りる仕組みだからです。停止すると返却され、次の起動でまた別のものを借ります。Elastic IP は「自分専用に確保したアドレス」なので、返却されず変わりません。

確保しておくだけなら、ずっと無料で持っておけるの?

いいえ。Elastic IP は確保している間に料金がかかる仕組みです(詳しくは末尾のコスト注記で説明します)。「使う分だけ確保し、使い終わったら返す」のが基本になります。これも今回体験する大事なポイントです。

Goal

EC2 インスタンスに Elastic IP アドレスを関連付け、停止 → 起動を繰り返してもパブリック IP アドレスが変わらないことをコンソール上で確認する。最後に Elastic IP を正しく解放して片づける。

04 — Architecture

つくる構成

「Elastic IP なし」と「あり」で、停止 → 起動したときにパブリック IP アドレスがどうなるかを比べます。この違いを自分の手で再現するのが、このハンズオンの中心です。

Before — Elastic IP なし

自動割り当ての
パブリック IP のまま

EC2 インスタンス
203.0.113.2518.182.xx.xx
⚠ アドレスが変わってしまう
After — Elastic IP あり

固定アドレスを
関連付けた状態

EC2 インスタンス
Elastic IP(自分専用に確保した固定アドレス)
52.196.xx.xx52.196.xx.xx
✓ 同じアドレスのまま変わらない

※ 図の IP アドレスは例です。実際の値は、自分の環境で割り当てられたものになります。

05 — Requirements

要件

以下の流れで、「変わる」→「固定する」→「変わらない」を順に確認してください。

No要件
1リージョンは「東京(ap-northeast-1)」を使用する。
2確認用に EC2 インスタンスを 1 台起動する。AMI は Amazon Linux 2023(最新版でよい)、インスタンスタイプは無料利用枠の対象(例:t2.micro または t3.micro)。パブリックサブネットに置き、パブリック IP アドレスが割り当てられるようにする。名前タグは eip-demo(例)。
3Elastic IP を関連付けるに、インスタンスを停止 → 起動し、パブリック IP アドレスが別の値に変わることを確認する。
4Elastic IP アドレスを 1 つ取得(割り当て)する。
5取得した Elastic IP を、手順 2 の EC2 インスタンスに関連付ける。
6関連付けたあとに、もう一度インスタンスを停止 → 起動し、パブリック IP アドレスが変わらないことを確認する。
06 — Steps

構築の進め方

「先に変わることを確かめてから固定する」という順番が、このハンズオンの肝です。Elastic IP のありがたみは、変わる様子を一度見ておくと実感できます。

  1. マネジメントコンソールにサインインし、リージョンを合わせる

    ブラウザで AWS マネジメントコンソールにサインインします。画面右上のリージョン名をクリックして、「アジアパシフィック(東京)ap-northeast-1」になっていることを確認してください。

    Elastic IP もリージョンごと

    Elastic IP アドレスは、取得したリージョンの中でだけ使えます。インスタンスと同じリージョンで作業していることを最初にそろえておきましょう。

  2. 確認用の EC2 インスタンスを 1 台起動する

    EC2 コンソールで「インスタンスを起動」を押し、名前に eip-demo、AMI に Amazon Linux 2023、インスタンスタイプに無料利用枠の対象(例:t2.micro / t3.micro)を選びます。ネットワーク設定ではパブリックサブネットパブリック IP の自動割り当てを有効にして起動します。

    今回は中に入らない

    このハンズオンではサーバーにログインしません。キーペアは「キーペアなしで続行」でも構いません。セキュリティグループも初期値のままで大丈夫です(アドレスの変化はコンソールで見られます)。

  3. いまのパブリック IP アドレスを控える

    インスタンスの状態が「実行中(Running)」になったら、一覧で eip-demo を選び、詳細画面の「パブリック IPv4 アドレス」の値をメモします(例:203.0.113.25)。これが「変わる前」の値です。

    パブリックとプライベートを取り違えない

    詳細画面には「プライベート IPv4 アドレス」も並んでいます。今回見るのはパブリックのほうです。プライベート IP は VPC 内部用のアドレスで、別の役割を持っています。

  4. いったん停止して、起動し直す

    eip-demo を選び、「インスタンスの状態」→「インスタンスを停止」を選びます。状態が「停止済み(Stopped)」になったら、今度は「インスタンスを開始」で起動し直します。

    「再起動」ではなく「停止 → 開始」

    OS の「再起動(Reboot)」ではアドレスは変わりません。アドレスが入れ替わるのは、AWS の視点で一度停止してから開始したときです。必ず「停止」→「開始」で操作しましょう。

  5. パブリック IP アドレスが変わったことを確認する

    もう一度、詳細画面の「パブリック IPv4 アドレス」を見ます。手順 3 で控えた値と違うアドレスに変わっているはずです(例:203.0.113.2518.182.xx.xx)。これが「Elastic IP なし」の状態です。

    ここがスタート地点

    この「勝手に変わってしまう」状態を一度見ておくことが大切です。次のステップから、これを固定していきます。

  6. Elastic IP アドレスを取得(割り当て)する

    EC2 コンソールの左メニュー「ネットワーク & セキュリティ」→「Elastic IP」を開き、「Elastic IP アドレスの割り当て」を押します。設定はほぼ既定のまま(ネットワークボーダーグループは東京リージョンのもの)で「割り当て」を押すと、新しい固定アドレスが 1 つ手に入ります。

    「取得した」だけではまだ付いていない

    割り当てただけでは、アドレスは「手元に確保された」状態で、まだどのインスタンスにも結び付いていません。次の手順で関連付けて、はじめてサーバーのアドレスになります。

  7. Elastic IP をインスタンスに関連付ける

    取得した Elastic IP を選び、「アクション」→「Elastic IP アドレスの関連付け」を押します。リソースタイプで「インスタンス」を選び、eip-demo を指定して「関連付ける」を押します。

    関連付けると元のアドレスは置き換わる

    関連付けると、インスタンスのパブリック IP アドレスが、この Elastic IP の値に切り替わります。以降、外からのアクセス先はこの固定アドレスになります。

  8. もう一度、停止 → 起動して「変わらない」ことを確認する

    手順 4 と同じように eip-demo停止 → 開始します。起動後に詳細画面の「パブリック IPv4 アドレス」を見ると、今度はElastic IP と同じ値のまま変わっていないはずです。これで固定できました。

    これがゴール

    停止・起動をしてもアドレスが動かない——この状態を確認できたら、このハンズオンの目的は達成です。忘れずに、最後の「後片づけ」まで進めましょう。

07 — Pitfalls

つまずきポイント

初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直せばよいか」の手がかりとして使ってください。

Pitfall 01 — 固定したはずなのにアドレスが変わって見える

「Elastic IP を取得したのに、停止・起動でまだ変わる」

「取得した」だけで関連付けができていないときに起こりがちです。①Elastic IP の一覧で、その アドレスの「関連付けられたインスタンス ID」に eip-demo が表示されているか②確認しているのがパブリック IPv4 アドレスか(プライベート IP と混同していないか)を見直しましょう。取得と関連付けは別の操作だ、という点がポイントです。

Pitfall 02 — 「再起動」してもアドレスが変わらず戸惑う

「Before の確認で、変わるはずのアドレスが変わらない」

OS の「再起動(Reboot)」で済ませていないか確認しましょう。アドレスが入れ替わるのは、AWS の操作として一度「停止(Stop)」し、そのあと「開始(Start)」したときです。状態が「停止済み」を経由しているか、操作のメニューを見直してみてください。

08 — Checklist

完了チェック

要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。EC2 コンソールを開いて、次を順に確かめましょう。

  • 画面右上のリージョン表示が 「東京 / ap-northeast-1」になっている。
  • 「インスタンス」一覧に eip-demo があり、状態が 「実行中(Running)」になっている。
  • 「Elastic IP」の一覧に、取得したアドレスが 1 つ表示されている。
  • そのElastic IP の「関連付けられたインスタンス ID」eip-demo が表示されている。
  • インスタンス詳細の「パブリック IPv4 アドレス」が、その Elastic IP と同じ値になっている。
  • 停止 → 開始を行ったあとでも、パブリック IPv4 アドレスがその Elastic IP のまま変わっていない
09 — Think

考えてみよう

手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。

  1. 自動で割り当てられるパブリック IP は停止・起動で変わるのに、Elastic IP は変わりませんでした。この違いは、それぞれのアドレスの「持ち方」の違いから来ています。どう違うのか、自分の言葉で説明してみましょう。
    ヒント
    自動割り当ては「起動のたびに空いているものを一時的に借りる」イメージ、Elastic IP は「自分専用に確保して手元に置いておく」イメージです。借り物は返すと別のものになり、確保したものは返さない限り同じ、という観点で整理してみましょう。
  2. Elastic IP は「確保している間に料金がかかる」仕組みです。では、どんな状態のときに「もったいない(無駄な料金が発生しやすい)」と言えるでしょうか。
    ヒント
    「確保したのに使われていない」状態を考えてみましょう。たとえば、どのインスタンスにも関連付けていない Elastic IP や、関連付けた相手のインスタンスが動いていない場合などです。「使っていないのに確保し続ける」ことの是非を考えると見えてきます。
  3. 固定のアドレスがあると便利な反面、IP アドレスを直接伝える方法には不便な面もあります。Web サイトの公開などで、IP アドレスの代わりによく使われる「人が覚えやすい名前」の仕組みは何でしょうか。それを使うとどんな利点があるか考えてみましょう。
    ヒント
    普段ブラウザで入力しているのは数字の羅列ではなく、文字でできた「名前」のはずです。その名前と IP アドレスを結び付ける仕組み(ドメインネームシステム)を調べてみましょう。アドレスが変わっても名前側を直せば済む、という柔軟さがヒントです。
10 — Clean up

後片づけ

Elastic IP は放置すると料金が発生し続ける代表的なリソースです。今回はとくに、片づけまでが学びの一部です。次の順番で片づけましょう。

  1. インスタンスを終了する:EC2 コンソールの「インスタンス」で eip-demo を選び、「インスタンスの状態」→「インスタンスを終了(Terminate)」を選びます。状態が「終了済み(Terminated)」になれば、このサーバーの料金は止まります。
  2. Elastic IP を解放(Release)する:左メニュー「Elastic IP」で対象のアドレスを選び、「アクション」→「Elastic IP アドレスの解放」を選びます。これを行わないと、インスタンスを終了しても Elastic IP の料金は残り続けます。今回の片づけで最も重要な操作です。
  3. 確認:「Elastic IP」の一覧から、解放したアドレスが消えていることを確かめます。
Caution — 終了しただけでは Elastic IP は残る

インスタンスを消しても、Elastic IP は別途「解放」が必要

Elastic IP は、インスタンスとは独立したリソースです。インスタンスを終了すると関連付けは外れますが、アドレスそのものは「確保したまま」手元に残り、料金が発生し続けます。使い終わったら必ず「解放(Release)」して返却しましょう。なお、デフォルト VPC やデフォルトのサブネットは消さないようにしてください。

コストに関する注意: Elastic IP アドレスは、確保している間ずっと時間あたりの料金がかかります(関連付けの有無にかかわらず課金されます)。また現在は、Elastic IP に限らずすべての public IPv4 アドレスに時間あたりの料金がかかる扱いになっています。あわせて、確認用に起動する EC2 インスタンスも起動中は課金されますt2.micro / t3.micro などは無料利用枠の対象で、月あたり一定時間まで無料)。インスタンスに付くディスク(EBS ボリューム)にも料金がかかります。短時間で終えれば少額にとどまりますが、Elastic IP を解放し忘れると、インスタンスを消したあとも課金が続く点にとくに注意してください。最新の料金は AWS の公式料金ページで確認できます。なお、VPC・サブネット・ルートテーブル・セキュリティグループ自体には料金はかかりません。使い終えたら、上の「後片づけ」で必ずインスタンスの終了と Elastic IP の解放を行いましょう。