ちょっと話題の記事

EIPで料金発生するパターンとしないパターン #AWS

2017.06.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

EC2でパブリックIPアドレスを固定したい時にはEIP (Elastic IP) を使いますが、
それなりにAWSを使っているひとからも、「どういう時に料金が発生するのか分かりにくい」という話を聞くことがあります。

ちょっとまとめてみました。

その前に : そもそもEIPとは

ひとことで言えば「EC2インスタンスで使える、パブリックIPアドレス(グローバルIPアドレス)の固定IPアドレス」です。

これを説明しだすと長くなるので、参考URLをご紹介するに留めさせてください。

問題は、これが完全に無料で使えるわけではないということです。

公式には、下記のように記載されています(記事執筆時点での東京リージョンの場合):

  • $0.00 : 実行中のインスタンスと関連付けられている Elastic IP アドレス 1 つ
  • $0.005 : 実行中のインスタンスと関連付けられている追加の Elastic IP アドレスあたり/1 時間(比例計算)
  • $0.005 : 実行中のインスタンスと関連付けられていない Elastic IP アドレスあたり/1 時間(比例計算)
  • $0.00 : Elastic IP アドレスのリマップ 1 回あたり(1 か月間で 100 リマップまで)
  • $0.10 : Elastic IP アドレスのリマップ 1 回あたり(1 か月間で 100 リマップを超える追加分)

EC2 インスタンスの料金 – アマゾン ウェブ サービス (AWS)

これで分かる方にとっては、完全に十分な情報が書いてありますが、
以下、もう少し噛み砕いてお話ししたいと思います。

料金が発生しない場合

このパターンは、実はひとつしかありません。

  1. 起動しているEC2インスタンスで、EIPを1つだけ使用している場合

1-1

「ひとつしか」と言いましたが、通常利用においてほとんどのケースはこちらに当たるのではないでしょうか。インスタンスをひとつ起動し、それにEIPをひとつ割り当て、外部からのアクセスを可能にするパターンです。

この使い方で使っている限りは、EIPそのものには料金が発生しません(もちろんEC2インスタンスそのもののコストは発生します)。

なおAWS用語的には、EIPはEC2インスタンスと「関連付ける(associate)」という言い方をします。
以下、これにならって記載します。

料金が発生する場合

1時間あたり $0.005 ということは、概算して 24時間で13円ちょっと、1ヶ月で400円ほどでしょうか? 言うほど高くは感じられないかもしれませんが、コストはコストです。それに複数台ともなると無視は出来ません。

下記のような利用をしているEIPについては、それぞれごとに料金が発生します。

  1. EIPを関連付けているEC2インスタンスが停止している場合
  2. EC2に関連付いていない(= 使わずに放置されている)EIP
  3. 関連付いているEC2は起動しているけれども、ふたつ目以降のEIPの場合
  4. EIPの「リマップ(remap)」を、1ヶ月に100回以上行った場合(101回目以降について $0.1)

ちょっと補足します。

1.については大丈夫でしょうか。要は、関連付けたEC2が動作中は無料、動作していなければ有料ということになります。

2-1

料金が発生するパターンとしては、これが多い気がします。
EC2を固定IPアドレスで使用したい、しかし普段からずっと起動しておきたくはない、そういうケースではEIPの料金(維持費と呼べるかもしれません)が必要になります。

2.について。
EIPは使用するために、まずは「割り当て(allocate)」という操作が必要になります。AWSから割り当ててもらったEIPを、EC2に「関連付け(Associate)」て使う、という流れになります。

2-2

この「割り当て」られたEIPは、「開放(release)」されるまで使われずに残ります。いままで関連付けていたEC2インスタンスを削除したけれどもEIPの開放をし忘れていた。。。という場合でも、そのEIPに対して料金は発生し続けます。

消し忘れに要注意ですね。

3.ですが、EC2には追加のネットワークインタフェースを接続することが出来ます。オンプレミスでいえばNICの増設みたいなイメージでしょうか。

この「NICみたいなもの」のことを、AWSでは「ENI」といいます。

2-3

実はEC2を起動したときに、自動的にENIが作成されてそのインスタンスに接続(アタッチ)されています。
つまり、2枚め、3枚めのENIをインスタンスに接続できるということですね。

そしてその2枚め、3枚めのENIにも、当然1枚めと同じようにEIPを関連付けることが出来ます。

例えば、ひとつのEC2インスタンスにふたつのENIを接続すると、都合3つのEIPを関連付けることが可能になりますが、この場合、

  • EC2インスタンスが起動している場合 ... 2つのEIPに対して料金が発生
  • EC2インスタンスが停止している場合 ... 3つ全てのEIPに対して料金が発生

となります。「料金が発生しないのは、起動しているEC2インスタンスでEIPを1つだけ」のルールがここでも関係してくるわけです。

4.については、EIPの「リマップ」を月に100回を超えて行った場合に料金が発生する、ということになります。仮に1ヶ月の間に120回リマップしたとすれば、月$2.00発生ということになるでしょうか。

リマップの定義についてははっきりしたドキュメントを見つけることができなかったのですが、こちら のフォーラムの言葉を借りると、「あるインスタンスから別のインスタンスにEIPを付け直すこと(reassociation of EIP from an instance to another instance)」のようです。

こんな場合は無関係

ここまでで一応網羅されていると思うのですが、念のため、「こんな場合にはお金かかりません」というのをいくつか書いておきたいと思います。

EC2を普通に起動した場合

ただそれだけでは、EIPが自動的に割り当てられることはありません。

EC2をVPC内だけで、パブリックIPを使わずに運用している場合

EIPはパブリックIPだけです。プライベートIPはVPC内では標準で固定されているのですが、そちらにはお金はかかりません。

上限緩和した場合

割り当てられるEIPは上限が決まっていますが、その上限を緩和申請することは可能です。

ただし、AWSの公式ドキュメントにはこう書かれています

デフォルトでは、すべての AWS アカウントでリージョンあたり 5 つの Elastic IP アドレスまでに制限されています。これは、パブリック (IPv4) インターネットアドレスが数に限りのあるパブリックリソースであるためです。

「IPv4の枯渇」というのももう懐かしいキーワードになってしまいましたが、あまり無制限に緩和してもらうことはできない、とは思っておいたほうが良いかも知れません。

話がそれてしまったので、EIPのコストの話に戻りますが、
その申請をしただけでは、特に料金は発生しません。実際にEIPを使用した場合は、もちろんその数だけ計算する必要があります。

まとめ

  • 「起動しているEC2インスタンスで、EIPを1つだけ使用している場合」には料金が発生しない
  • それ以外のEIPには、1時間あたり $0.005 だけ料金が発生する
  • EIPの付け外しも、100回を超えると1回あたりに $0.10 発生する

ところで

  • Q : 図の右にいるめそ子たちにはどんな意味が?
  • A : かわいいでしょ?