GCPのCompute EngineのFree Tier(無料枠)の外部静的IPには本当に課金されないのか?

ドキュメント読んでもわかりづらいのでメモを残しておきます。

2024/4現在、GCPの無料枠(Free Tier)ではメモリ1GBくらいの仮想マシンを永久無料で使えることになっていますが、これに割り当てられる外部IPv4アドレス(インターネットと接続するために必要)に果たして課金されるのか?ということが結構わかりづらいです。

いや、まあ、Google Cloud の無料プログラムには「Compute Engine の無料枠では外部 IP アドレスに対する課金は発生しません。」と書いてあって、また結論としては事実上(?)課金はされないということになったんですが、一応もう少し詳しく書きます。

自分も無料枠で使い始めてみて、しばらくの間は3万くらいのクレジットがあるので特に何も気にしなくてよかったんですがこの期間が切れていざ本格的な課金状態になってみて、しばらくすると無料のはずのマシンから1円くらいの課金額が発生していました。それで色々調べてこんなツイートもしました。

これを見ると、2021年の一時期は実際に課金されていた時期があったようです。で、この期間の英語の文面が「Google Cloud Free Tier does not include external IP addresses.」です。現在の「Compute Engine free tier does not charge for an external IP address.」(=「Compute Engine の無料枠では外部 IP アドレスに対する課金は発生しません。」)は、なんかこれと文の見た目が似てるのに意味としては逆になっていて、不安な感じがします。

不安だったのでとりあえず全部IPアドレスを外しました。しかしインターネットには接続したいので、確実に無料っぽいIPv6アドレスを割り当ててしばらく使ってみました。

ちなみにさっきの1円の課金額は本当にクレカから引かれました。

その後、また思い立ってIPv4を有効にしてみましたが、結局とりあえず課金額は1円くらいのオーダーには収まるようです。

「料金明細」(ここが一番詳しそうです)をみてみると、Compute Engineの計算コスト(メモリ・CPU)に関しては、「E2 Instance Ram running with free tier discount」として-326円といった感じの表記があります。

(一部消してあります。)これはわかりやすい感じです。

一方で、ネットワークに関しては、以下のような感じです。

同額の負の金額なのは同じですが、「free tier discount」という表現がなく、上と全く同じ文字列です。しかも、先ほどのfree tier discountとは違って、こちらはクレジットの扱いのようで、横にある「割引」(あるいは「支出に基づく割引(契約による)」)のチェックボックスを消すとこの負の金額のほうは表示されなくなります。free tier discountのほうは引き続き表示されています。ちなみに、無料期間は既に終了していて、「クレジット」の画面を開いても何もないので、なんでクレジットのありなしで金額に差が出るの?ってところも混乱しました。

どうやら、結果的に無料にはなりますが内部的に扱いが違うようです。

まあ普通に考えて「無料tierのインスタンスに紐づいているIP」かどうかを判別するのって結構ダルそうですし、その辺で多分あんまり綺麗じゃない実装になってしまっているのでしょう。その結果として計算に誤差が出て1円課金とかされてしまっているんじゃないでしょうか。

というわけでGCPの外部IPv4(ちなみに自分が使っていたのは静的のほうです)には、ほとんど課金はされないという結論になりました。

しかしIPv4の枯渇は激しく、最近はAWSでもIPへの課金が始まったみたいな話を聞いたので、こまめに課金条件とか請求額を確認しましょう。