料金

Pub/Sub の料金は下記に基づいて計算されます。

  • メッセージの取り込みと配信
  • シーク関連メッセージのストレージ: スナップショットおよび保持された確認済みメッセージ

メッセージの取り込みと配信

メッセージ配信の料金

メッセージの取り込みと配信の料金は、送受信されたデータ量に応じて月単位で計算されます。毎月 10 GB の使用まで無料。その後、メッセージの取り込みまたは配信の料金は TiB あたり $40 です。

メッセージのデータ量は、次の項目の合計です。

  • エンコードされたメッセージ本文の文字列のバイト数
  • 各属性のキーとその値のサイズ
  • タイムスタンプの 20 バイト
  • message_id 文字列のサイズ
  • 早期アクセスやその他の制限されたアクセス API に関連付けられたフィールドなど、追加のオプション フィールド

メッセージ サイズに関係なく、パブリッシュ、push、pull リクエストごとに最低 1,000 バイトが評価されます。つまり、1,000 バイト未満のメッセージの場合、リクエストごとに複数のメッセージをバッチ処理する方がコストが抑えられます。

取り込みと配信の料金は、パブリッシュ リクエストと pull、streamingPull、push オペレーションを使用して配信されたデータにのみ適用されます。その他のオペレーションは無料です。

米ドル以外の通貨でお支払いの場合は、Google Cloud SKU に記載されている該当通貨の料金が適用されます。一覧表示されているレートは TiB あたりのレートです(240バイト、または約 1.01 兆バイト)。

データ リージョンの下り(外向き)料金

インターネットの下り(外向き)料金と Google Cloud リージョン間でのメッセージ配信の料金は、Compute Engine のネットワーク料金と同様です。ただし、以下の例外を除きます。

  • Pub/Sub の使用に対するゾーンの下り(外向き)料金は発生しません。
  • Google サービスへの下り(外向き)は下り(外向き)料金の対象となります。

たとえば、us-west1 でパブリッシュされ、europe-west1 でサブスクライバーに配信される 1 MiB のメッセージは、2 つの異なる SKU に対して請求されます。

  • 2 MiB の基本的メッセージ配信(1 MiB のパブリッシュと配信)
  • 南北アメリカから EMEA への 1 MiB のリージョン間データ配信

使用状況を把握するには、BigQuery に課金データをエクスポートします。これを設定すると、以下のようなクエリを使用して使用状況を把握できます。

SELECT TIMESTAMP_TRUNC(usage_start_time, day) as usage_date,
  sku.description,
  usage.unit,
  sum(usage.amount) as egress_volume
FROM `BILLING_EXPORT_TABLE`
WHERE
  _PARTITIONTIME >= TIMESTAMP("2019-01-01")
  AND service.description = "Cloud Pub/Sub"
  AND (sku.description like "Internet data%"
      OR sku.description like "Inter-region data%")
GROUP BY usage_date, sku.description, usage.unit;

例: メッセージの取り込みと配信

ここでは、予想されるオペレーションの総費用について例をあげて説明します。たとえば、アプリケーションで 2 つのサブスクリプションがあるトピックに 1,024 KB のメッセージを 1 MiB/秒でパブリッシュするとします。サブスクライバーが常時稼働し、Pub/Sub が 1 MiB/秒で取り込みを行い、2 MiB/秒で配信を行うとします。この場合、合計のデータ伝送速度は 3 MiB/秒になります。1 か月を 30 日で計算すると、この例の合計データ量は 3 MiB/second x 3600 seconds/hour x 24 hours/day x 30 days/month x 1 month/(2^20 MiB/TiB) = 7.416 TiB となります。最初の 10 GB(無料)を差し引くと、データ量は 7.406 TiB になり、料金はそれに $40/TiB を掛けた $296.24 になります。

プロジェクト間での請求

複数のプロジェクトにわたって Pub/Sub を使用している場合は、リクエストしたリソースを含むプロジェクトに対して Pub/Sub 料金が請求されます。

  • パブリッシュに対して課金されるのは、トピックを含むプロジェクトです。
  • サブスクリプションに対して課金されるのは、サブスクリプションを含むプロジェクトです。

たとえば、サブスクリプションがプロジェクト A に含まれている場合は、サブスクリプションがプロジェクト B 内のトピックに関連付けられていても、サブスクリプションから取得されるデータの料金はプロジェクト A に課金されます。

プロジェクト A の承認済みサービス アカウントが、プロジェクト B のサブスクリプションからのメッセージを使用する場合、サブスクリプションから取得されるデータの料金はプロジェクト Bに課金されます。

料金

以下の場合、メッセージのストレージ料金が $0.27/GiB/月のレートで請求されます。

  • シークを使用して確認済みメッセージを再処理できるようにするために、サブスクリプションが確認済みメッセージを保持するように構成されている。この場合、保持される確認済みメッセージのストレージ料金が発生します。
  • サブスクリプションのスナップショットが作成される。この場合、スナップショットの未確認メッセージが保存され、その分のメッセージのストレージ料金が発生します。さらに、スナップショットを作成する際に、サブスクリプションに未確認メッセージのバックログが存在する場合は、そのバックログを 7 日間保持する場合と同等の料金が 1 回だけ発生します。

スナップショットは、再生のためにメッセージを保持する場合に、確認済みのすべてのメッセージを保持するよりも経済的な方法となります。スナップショットは、複数のサブスクリプションで単一のスナップショットを使用できるためです。通常、スナップショットに含まれる請求対象データは少量です。この量はスナップショットの経過時間とともに徐々に増加します。サブスクリプションが確認済みメッセージを保持するように構成されていると、メッセージ データの固定時間枠が(安定した状態で)維持され、より便利になる場合があります。

例: サブスクリプションでの確認済みメッセージの保持

単一のサブスクリプションを持つ以下のようなトピックがあるとします。

  • このトピックは、1 MiB/秒の安定した速度でデータを受信します。
  • サブスクライバーはサブスクリプションのデータに追随できています。通信速度は 1 MiB/秒で、新しいメッセージ バックログの量はごくわずかです。
  • サブスクリプションの確認済みメッセージの保持期間は 7 日間です。

この設定では、確認済みメッセージの量は 1 MiB/second x 3600 seconds/hour x 24 hours/day = 86.4 GiB/day で増加します。

7 日後に、確認済みメッセージの保持期限が切れ始めます。保持される確認済みメッセージの総量は 7 days x 86.4 GiB/day = 605 GiB で止まります。この量のメッセージの月額ストレージ料金の合計は、およそ 605 GiB-month x $0.27/GiB-month = $163 となります。

例: スナップショット メッセージのストレージ料金

スナップショット メッセージのストレージ料金は、スナップショットのトピックに新たにパブリッシュされたメッセージの分の追加料金と、作成時に 1 回だけ発生する料金の合計額です。 ここでは、確認済みメッセージを保持しているサブスクリプションのスナップショットについて考えます。スナップショットを作成したサブスクリプションには未確認メッセージのバックログが存在しないため、スナップショットの保持期間は、その前に削除されない限り 7 日間となります。最初の 1 分間にパブリッシュされたデータ(60 MiB)は 7 日間から 1 分を差し引いた期間だけ保持され、さらに次の 1 分間にパブリッシュされたデータが 7 日間から 2 分を差し引いた期間だけ保持されるというように繰り返されます。スナップショットの保持期限が切れると、バックログのサイズは 605 GiB になり、ストレージ使用量は 1/2 x 605 GiB x 7 days = 2118 GiB-days で、1 か月が 30 日とすると料金は 2118 GiB-days x (1/30 months/day) x $0.27/GiB-month = $19 となります。したがって、スナップショットの保持は確認済みメッセージの保持よりも費用対効果が高くなる傾向があります。

例: バックログが存在するサブスクリプションのスナップショット

スナップショットを作成する際に、サブスクリプションに未確認メッセージのバックログが存在する場合は、そのバックログを 7 日間保持する場合と同等の料金が 1 回だけ発生します。たとえば、サブスクリプションに未確認メッセージのバックログが 10 GiB あるとします。この場合、スナップショット作成時に 1 回だけ発生する料金は、10 GiB x 7 days / 30 days/month x 0.27/GiB-month = $0.63 です。

リソース ロケーションの制限による影響

メッセージ ストレージ ポリシーの適用により、Google Cloud リージョンから外へのデータ送信が必要になる場合、リージョン下り(ネットワーク)料金(外向き)が加算される可能性があります。たとえば、メッセージが以下のように処理されるケースが考えられます。

  • リージョン A でパブリッシュされる
  • リージョン B のストレージに転送される
  • リージョン C のサブスクライバー クライアントに配信される

この場合の処理は、次のとおりです。

  • トピックを含むプロジェクトは、リージョン A からリージョン B へのネットワーク下りトラフィック(外向きトラフィック)に対して課金されます。
  • サブスクリプションを含むプロジェクトは、リージョン B からリージョン C へのネットワーク下りトラフィック(外向きトラフィック)に対して課金されます。

トピックを含むプロジェクトは、メッセージがパブリッシュされたリージョンとは異なるリージョンに保管される場合に(実際にリージョン B がリージョン A とは異なるので)下り(外向き)料金が発生します。 サブスクリプションを含むプロジェクトは、パブリッシュされたメッセージがサブスクライバー クライアントがあるリージョンとは異なるリージョンに保管される場合に(リージョン C がリージョン B とは異なるので)下り(外向き)料金が発生します。