
Googleは2020年から、外部IPv4アドレスを使うGoogle Compute Engine VMの料金を引き上げると発表しました。本スクリプトで、お使いのマシンの今後のコストを試算してみましょう。
これまで無料だったサービスが、2020年1月1日から少しだけ有料になります。Google Cloudが、外部IPを利用するコンピュートインスタンスへの課金を決定したためです。発表によると、追加料金はオンデマンドマシンで1時間あたり0.004米ドル、プリエンプティブルインスタンスで1時間あたり0.002米ドルとなります。マシンを丸1か月稼働させた場合、それぞれ月額2.92ドル、1.46ドルの上乗せです。なお、未使用の静的IPの料金は従来どおり1時間0.01ドル(月額7.30ドル)で据え置かれます。
自社アカウントへの影響は?
Google Cloud世界最大のパートナーであるDoiT Internationalでは、外部IPを使用しているVMを洗い出すための簡単なスクリプトを用意しました。これを実行すれば、外部IP課金変更が組織全体に与える影響を試算できます。「 当社はお客様のコスト効率向上を追求していますが、その知見を世界中のクラウドコミュニティとも共有したいと考えています」と、当社CTOは述べています。
スクリプト実行の前提条件
本スクリプトは、gcloudコマンドラインツールを使い、GCP組織内の全プロジェクトを横断して外部IPを持つインスタンスを一覧表示します。Google Compute Engine APIへのAPIコールには、組織レベルでviewerロール権限を持つサービスアカウントを使用します。こちらの手順でサービスアカウントを作成するか、GCP組織管理者に依頼して認証用JSONファイルを発行してもらってください。組織viewer権限ですでに認証済みの場合は、サービスアカウントなしでもスクリプトを実行できます。
スクリプトの実行方法
curlhttps://raw.githubusercontent.com/doitintl/list-external-ips/master/ext-ips-analysis.sh
| bash実行すると、呼び出し元が閲覧権限を持つ組織配下の全プロジェクトを列挙し、各プロジェクトを順に走査して、外部IPが割り当てられているVMを検出します。
次のようにプロジェクト名を渡すことで、単一プロジェクトのみを対象に実行することもできます。
export PROJECT_ID='<enter your project id>'curlhttps://raw.githubusercontent.com/doitintl/list-external-ips/master/ext-ips-analysis.sh
| bash -s $PROJECT_ID出力結果
スクリプトを実行したフォルダに、以下のような_projectsIPs.csv_というファイルが生成されます。

不要な課金を避けるために
スクリプトを実行すると、組織内で稼働中のVMのうち、追加課金の対象になりうるものが一目で分かります。まず取り組むべきは、プロジェクトのVMを見直し、インターネットアクセスが不要なVMから外部IPを外すことです。一方、外部アクセスが必要なマシンについては、NATゲートウェイ経由でトラフィックを出す方法も検討できます(ただしNATゲートウェイには別途料金が発生します)。本当に必要な外部IPの分だけを支払う形にVMを最適化する方法は、ほかにも複数あります。詳しくはこちらからお気軽にお問い合わせいただくか、下のコメント欄にご意見をお寄せください。
本記事はいかがでしたか?クラウドコスト最適化に関するさらなる情報は、DoiT Internationalブログでお届けしています。