G-genの杉村です。Google Cloud (旧称 GCP) の請求の仕組みや請求先アカウントについて解説します。
基本的な概念
概念と用語
当記事では Google Cloud(旧称 GCP)の請求の仕組み、また請求先アカウントという言葉を、Amazon Web Services(以下、AWS)と比較しつつ解説します。
まずは請求先アカウントの仕組み、概念を図示します。
図の中にある、3つの用語を簡単に説明すると、以下のとおりです。
用語 | 説明 |
---|---|
請求先アカウント | 請求先情報を定義する設定オブジェクト。プロジェクトと紐づける |
お支払いプロファイル | クレジットカード番号など、支払い情報を定義する設定オブジェクト。請求先アカウントと紐づける |
プロジェクト | Google Cloud のリソースを収容する、いわゆる「テナント」 |
- 参考 : Cloud Billing について
請求先アカウントとは
Google Cloud を利用するためにはプロジェクトの作成が必要ですが、プロジェクトごとに請求先を設定する必要があります。その請求先を定義する設定オブジェクトが、請求先アカウントです。請求先アカウントでは、以下のような情報を設定したり、情報を閲覧したりできます。
- 請求先(お支払いプロファイル)
- 請求書の表示、ダウンロード
- 課金の分析
- 予算アラート(利用料金が一定値を超えると警告メールを発信する)
一度、請求先アカウントを作ると、その請求先アカウントは再利用ができ、複数のプロジェクトと紐づけることができます。つまり、請求先アカウントとプロジェクトは 1:n の関係です。
お支払いプロファイル
お支払いプロファイルには、クレジットカード情報や請求書送付先など、具体的な支払い情報が含まれています。
なお、お支払いプロファイルを表示したり編集したりする権限は、請求先アカウントの権限とは独立して設定可能です。お支払いプロファイルは一度設定すると、編集したり閲覧したりする頻度は低いはずですので、権限を持つべき人は請求先アカウントよりもごく少なくなるはずです。クレジットカード番号などの情報が入っていますので、より厳密に権限管理しましょう。
複数のプロジェクトと請求
以下のように、Google Cloud 組織の中には複数の請求先アカウントを作成することができます。
また、プロジェクトごとに違う請求先アカウントを設定できます。
請求先アカウントを複数作成すると、管理が煩雑になります。「利用内訳が分かるだけではダメで、請求書を完全に分割したい」「プロジェクトごとにクレジットカードを分けたい」など、特別な理由がなければ複数の請求先アカウントを作成する必要はありません。
1つの請求先アカウントに複数のプロジェクトが紐づいていても、コンソールの費用内訳画面で「プロジェクトごと」「サービスごと」「フォルダごと」など詳細に課金の内訳を閲覧することが可能です。
部署ごとやシステムごとの課金内訳を知りたいときは、まずはその方法を検討します。
無料枠
Google Cloud には、サービスごとに無料枠が存在しています。例えば BigQuery は、1ヶ月あたり「10 GiB のデータ保存」「1 TiB のスキャン」までが無料で利用できます。
ただし、これらの Google Cloud 無料枠は、特記がない場合は「請求先アカウント」の単位でカウントされます。Google Cloud プロジェクトが複数あっても、それらのプロジェクトが同じ請求先アカウントに紐づいていれば、1つの無料枠を共有することになります。
- 参考 : 無料枠
プロジェクトとの紐づけ
紐づけの基本
Google Cloud プロジェクトを請求先アカウントと紐づけると、そのプロジェクトのクラウド利用料は、その請求先アカウントに対して課金されます。
後述する Google Cloud パートナーによる請求代行サービスを利用する等の理由で、すでに利用中の Google Cloud 環境において、ある請求先アカウントから別の請求先アカウントに紐づけを変更することも可能です。
その場合、紐づけ変更の実施以降に発生したクラウド利用料金だけが、新しく紐づけた請求先アカウントに課金されるようになります。つまり、紐づけを行った翌月の請求は、2つの請求先アカウントに分かれて発生することに留意してください。
必要な IAM 権限
Google Cloud プロジェクトと請求先アカウントとの紐づけ操作を行うには、操作者の Google アカウントに、以下の両方の権限が必要です。
- プロジェクトに対する
resourcemanager.projects.createBillingAssignment
権限 - 請求先アカウントに対する
billing.resourceAssociations.create
権限
上記のうち 1. を満たすには、プロジェクトに対して以下のいずれかのロールが必要です(例示であり、他にも必要な権限を含んだロールは存在します)。
- オーナー(
roles/owner
) - プロジェクト請求管理者(
roles/billing.projectManager
)
また、上記のうち2. を満たすには、請求先アカウントに対して以下のいずれかのロールが必要です(同様に、例示です)。`
- 請求先アカウント管理者 (
roles/billing.admin
) - 請求先アカウント ユーザー (
roles/billing.user
)
アクセス制御に関する詳細や請求先アカウントに対して IAM ロールを付与する方法については、以下の公式ドキュメントもご参照ください。`
- 参考 : Cloud Billing のアクセス制御と権限 | Google Cloud
- 参考 : Cloud 請求先アカウントへのアクセスを管理する | Cloud Billing | Google Cloud
Google Cloud パートナーによる請求代行(請求代行)
請求代行の仕組み
Google Cloud パートナーによる請求代行サービス(課金代行サービス)を利用することで、 Google Cloud を割引料金で利用できるなどのメリットがあります。
パートナー経由で Google Cloud を利用する場合の請求の仕組みはパートナーごとに様々ですが、ここでは Google Cloud 専業パートナーである G-gen(ジージェン)社のケースをご紹介します。
G-gen の請求代行サービスに申し込むと、 G-gen から利用者に対して請求先アカウントが払い出されます。利用者は、この請求先アカウントを自由にプロジェクトに紐づけて使用することができます。
この請求先アカウントをプロジェクトに紐づけた時点から、Google Cloud の利用料金は Google から G-gen に請求されます。G-gen は利用者の代わりに Google に料金を支払い、その後で、G-gen から利用者に対して割引料金で請求をします。
このような仕組みですから、すでに Google Cloud を自社のクレジットカード等で利用していても、プロジェクトの紐づけ先を G-gen の請求先アカウントに切り替えるだけで、請求代行サービスを利用することができます。このとき、システムの中断や利用可能な機能差などはなく、G-gen 経由の支払いに切り替えて、割引の恩恵を受けることができます。
当記事では G-gen 社のケースを紹介しましたが、パートナーによって仕組みが異なりますので、詳細はパートナーの営業担当者にお問い合わせください。
G-gen 社の請求代行サービスの詳細は、以下をご参照ください。
注意点
Google Cloud Marketplace 経由で購入するサードパーティ製品(Elasticsearch や SendGrid など)は、再販の規定の関係でパートナー経由での販売ができない場合があります。
また Google 製品の中でも Google Maps Platform や Firebase など再販規定が少し特殊なサービスもあります。これらのサービスを利用している場合は、パートナーの営業担当者にお問い合わせください。
便利な機能
課金の分析
Google Cloudコンソールで「お支払い>レポート」画面を見ることで、請求先アカウントごとに詳細に課金の内容を分析することができます。
- プロジェクトごと
- サービスごと
- SKU (課金単位) ごと
- リソースに付与したラベルごと
- リージョンごと
- これらの掛け合わせ
など、多くの切り口で課金の内訳を確認し、グラフィカルに表示することができます。
- 参考 : Cloud Billing レポート
予算アラート
請求先アカウントに対して予算を設定し、その金額の n % に達したらメール通知する、などのアラート設定が可能です。
予算の粒度も、月ごと、四半期ごと、年間など任意の期間にできますし、予算の適用範囲プロジェクトやサービスも細かく選択できます。
例えば 「1ヶ月でXXXプロジェクトとYYYプロジェクトの合計予算を ¥2,000,000 とする。この予算に対し 50% に達したときと 75% に達したときにメールを発報する」 などの設定が可能です。
- 参考 : 予算と予算アラートを作成、編集、削除する
予算アラートの設定方法については、以下の記事もご参照ください。
課金データの BigQuery エクスポート
請求先アカウントの課金履歴を、BigQuery へ自動エクスポートすることができます。BigQuery により課金データの詳細な分析を行いたいときに活用できます。
エクスポートする内容は以下の3つから選択でき、それぞれ出力されるデータの粒度が違います。
- 標準の使用料金(Standard usage cost data)
- 詳細な使用料金(Detailed usage cost data)
- 料金(Pricing data)
「標準の使用料金(Standard usage cost data)」には、請求月、サービス、 SKU 、プロジェクト、ラベル、リージョン、費用、使用量、クレジット(割引)などの情報が含まれます。
「詳細な使用料金(Detailed usage cost data)」には「標準の使用料金」に含まれる情報に加えて、その料金を発生させたリソース名など個別リソースの情報が含まれます。リソースレベルでの分析が必要な場合に利用できます。
「料金(Pricing data)」をエクスポートすると、Google Cloud の最新の料金単価がエクスポートされます。Google Cloud の利用料金単価は変更されることがあるので、ここから最新の料金単価を取得することで、分析に活用できます。
詳細な仕様については、以下のドキュメントをご参照ください。
なお、これらの機能によって生成されたテーブルは自動的に「取り込み日付によるパーティション」が設定されます。BigQuery ではテーブルあたりのパーティションの最大数は 10,000 であり、これは日単位でのパーティションではおよそ27年で枯渇することを意味しています。これを超えた場合、エクスポートがエラーとなることが考えられますので、長期利用が想定される場合はパーティションに27年程度の期限を設定し、データが自動削除されるように設定することが望ましいでしょう。その場合は、データのバックアップなどは別途、検討する必要があります。
AWS との違い
Google Cloud と Amazon Web Services(AWS)の請求の仕組みとの違いも、簡単にご紹介します。
AWS では、クレジットカード等の請求先情報は AWS アカウントごとに定義します。「AWS アカウント」とはいわゆる「テナント」と言い換えることができ、 Google Cloud でこれに最も近い概念は「プロジェクト」です。
AWS では AWS アカウントごとに請求情報を設定するのが基本です。複数の AWS アカウントの請求をまとめるには Consolidated Billing という機能を利用します。ある AWS アカウントを管理アカウント(旧称マスターアカウント)とすることで、管理アカウントに請求をまとめることができます。
一方で、Google Cloud は請求先情報の設定が請求先アカウントとして独立していて再利用可能です。
まとめると、AWS では「請求先情報の設定は AWS アカウントの持つ属性」であり、Google Cloud では「請求先情報の設定はプロジェクトとは独立している」ということができます。これが、これら2つのクラウドの請求の仕組みにおける、大きな違いです。
杉村 勇馬 (記事一覧)
執行役員 CTO / クラウドソリューション部 部長
元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。
Follow @y_sugi_it