Google Cloud では、割り当てを使用して、使用できる特定の共有 Google Cloud リソースの量が制限されます。各割り当ては、特定のサービスへの API 呼び出し、特定のサービスに送信されるバイト数、プロジェクトで同時に使用されるストリーミング接続の数など、特定のカウント可能なリソースを表します。
多くのサービスには、割り当てシステムとは無関係の上限が存在します。それらは、メッセージサイズ上限やプロジェクト内に作成できる Pub/Sub リソースの数などの固定的な制約であり、増減することはできません。
割り当ての表示と管理
特定のプロジェクトについて、現在の割り当ての上限と使用状況を確認するには、IAM と管理の割り当てダッシュボードを使用します。このダッシュボードを使用して、次のこともできます。
- 割り当ての上限を引き下げる。
- 割り当ての上限引き上げを申請するプロセスを開始する。
割り当て使用量のモニタリングとアラートの詳細については、モニタリングをご覧ください。
割り当て使用量属性
push サブスクライバーのスループットについては、該当する push サブスクリプションを含むプロジェクトに対して、割り当て使用量の料金が請求されます。これは、サブスクリプションの名前に表示されるプロジェクトです。
他のすべての割り当てについては、リクエストで指定された認証情報に関連付けられたプロジェクトに対して、使用量の料金が請求されます。割り当て使用量の料金は、リクエストされたリソースを含むプロジェクトに対して請求されません。
たとえば、プロジェクト A のサービス アカウントからプロジェクト B 内のトピックにパブリッシュするためのパブリッシュ リクエストが送信された場合、割り当て使用量の料金はプロジェクト A に対して請求されます。場合によっては、別のプロジェクトに対して割り当て使用量の料金を請求することもできます。X-Goog-User-Project システム パラメータを使用すると、割り当て属性のプロジェクトを変更できます。X-Goog-User-Project の詳細については、システム パラメータをご覧ください。
gcloud CLI を使用して、特定のリクエストに対する割り当て属性用のプロジェクトを設定できます。gcloud CLI は X-Goog-User-Project リクエスト ヘッダーを送信します。
割り当て属性に使用するプロジェクトに対する roles/serviceusage.serviceUsageConsumer ロールまたは serviceusage.services.use 権限を持つカスタムロールが必要です。
次の例は、プロジェクト QUOTA_PROJECT に対して管理者のオペレーションの割り当てを請求しながら、プロジェクト RESOURCE_PROJECT 内のサブスクリプションのリストを取得する方法を示しています。Google Cloud CLI ターミナルで次のコマンドを実行します。
gcloud pubsub subscriptions list --project=
RESOURCE_PROJECT --billing-project=
QUOTA_PROJECT
QUOTA_PROJECT は、割り当てを請求する Google Cloud プロジェクトの ID に置き換えます。
なお、Pub/Sub では常に、課金対象のプロジェクトがリソースを含むプロジェクトになります。割り当て属性に対してのみ、プロジェクトを変更できます。
Pub/Sub の割り当て
次の表に記載する割り当ては、API とサービスの割り当てダッシュボードでプロジェクトごとに表示、編集できます。
リージョンの割り当ては、3 つのタイプに分けられます。
- 大規模リージョン:
europe-west1、europe-west4、us-central1、us-east1、us-east4、us-west1、us-west2。 - 中規模リージョン:
asia-east1、asia-northeast1、asia-southeast1、europe-west2、europe-west3。 - 小規模リージョン: 他のすべてのリージョン
1 回限りの配信の割り当ては、リージョンごとに異なります。各地域の詳細については、次の表をご覧ください。
| 割り当て | デフォルトの割り当て上限 | 説明 |
|---|---|---|
| リージョンごとのパブリッシャーのスループット |
|
割り当て使用量は、パブリッシュされた
複数のメッセージを 1 つのパブリッシュ リクエストに含めることができます。1 メッセージあたりの追加割り当て料金はありません。割り当て使用量の計算に使用されるメッセージのサイズには、自動生成された |
| リージョンごとの pull サブスクライバーのスループット |
|
割り当て使用量は、返された
割り当て使用量の計算に使用されるメッセージのサイズには、自動生成された |
| リージョンごとの Acknowledger のスループット |
|
割り当て使用量は、
|
| リージョンごとの push サブスクリプションのスループット |
|
push エンドポイントに行われた push 配信リクエストの場合、割り当て使用量はその push エンドポイントに送信された |
| リージョンごとの BigQuery サブスクリプションのスループット |
|
BigQuery に送信されるリクエストの場合、割り当て使用量は BigQuery に送信される |
| Cloud Storage サブスクリプションのリージョンあたりのスループット |
|
Cloud Storage に送信されるリクエストの場合、割り当て使用量は Cloud Storage に送信される |
| リージョンごとの StreamingPull サブスクライバーのスループット |
|
割り当て使用量は、サブスクライバーにストリーミングされた
クライアント ライブラリでは、可能な限り StreamingPull オペレーションを使用します。 |
| リージョンごとの StreamingPull のオープン接続数 |
|
任意の時点での StreamingPull の同時オープン接続数。 StreamingPull をご覧ください。 |
| 管理者のオペレーション | 1 分あたり 6,000(100 オペレーション/秒) |
各管理者オペレーション(GetTopicRequest など)が 1 ユニットとして割り当て使用量に計上されます。
|
| 1 回限りの配信が有効になっているサブスクリプションから消費されたリージョンごとのメッセージ数 |
|
割り当て使用量は、サブスクライバーが使用した
|
| 1 回限りの配信が有効になっているサブスクリプションを使用する場合に、確認応答済みのメッセージまたは期限が延長されたメッセージのリージョンごとの数 |
|
割り当て使用量は、
|
スループット割り当ての単位
スループット割り当て使用量は KB 単位で測定されます。1 KB は 1,000 バイトです。たとえば、PublishRequest に 50 バイトのメッセージが 105 件含まれ、ユーザーデータのサイズが 105 * 50 bytes = 5250 bytes の場合、割り当て使用量は max(1kB, ceil(5250 bytes/1000)) = 6kB となります。
リソースの上限
| リソース | 上限 |
|---|---|
| プロジェクト |
10,000 トピック 10,000 アタッチ / デタッチ サブスクリプション 5,000 スナップショット 10,000 スキーマ |
| トピック |
関連付けるサブスクリプション 10,000 件 関連付けるスナップショット 5,000 個 トピックのメッセージ保持 が設定されている場合、トピックに公開されたメッセージは、公開時から最大 31 日間永続ストレージに保持できます。 |
| サブスクリプション |
デフォルトでは、未確認応答メッセージは公開時から 7 日間永続ストレージに保持されます。保持されるメッセージの数に上限はありません。 サブスクライバーがサブスクリプションを使用していない場合、サブスクリプションは期限切れとなります。 デフォルトの有効期間は 31 日間です。 |
| スキーマ | スキーマサイズ(definition フィールド): 300 KBスキーマあたりのリビジョン数: 20 |
| パブリッシュ リクエスト | 10 MB(合計サイズ) 1,000 メッセージ |
| メッセージ |
メッセージ サイズ(data フィールド): 10 MB1 メッセージあたりの属性数: 100 属性キーサイズ: 256 バイト 属性値サイズ: 1,024 バイト |
| StreamingPull ストリーム | 1 オープン ストリームあたり 10 MBps |
| 単項 Pull レスポンス |
Pull レスポンスの最大メッセージ数: 1,000 Pull レスポンスの最大サイズ: 10 MB |
| Pull / StreamingPull メッセージ | 1 接続あたりの未処理の StreamingPull メッセージの合計数に対する上限が適用される場合があります。この上限が適用された場合は、メッセージを確認する頻度と使用する接続数を増やします。 |
| Acknowledge リクエストと ModifyAckDeadline リクエスト |
512 KB(合計サイズ) |
| 順序指定キー | メッセージに順序指定キーが含まれている場合、パブリッシャーの最大スループットは各順序指定キーあたり 1 MBps です。 |
| Cloud Storage バケット オブジェクト | Cloud Storage インポート トピックを使用する場合、バケット内のオブジェクト数の上限は 5, 000 万です。 |
より大きな割り当てにサービス アカウントを使用する
通常のユーザー アカウント(つまり、非サービス アカウント)で Google Cloud CLI ツールを使用している場合は、Pub/Sub オペレーションは手動オペレーションに適した速度に制限されます。この上限を超える速度では、RESOURCE_EXHAUSTED エラーが発生します。これに対する解決策は、必ずサービス アカウント認証情報を使用することです。gcloud CLI からの認証情報を自動化に使用するには、Pub/Sub オペレーション用のサービス アカウントをアクティブにします。
ロケーション エンドポイントを使用してリクエストをルーティングする
特定のリージョンで追加の割り当てがある場合、ロケーション Pub/Sub エンドポイントを使用して、これらのリージョンにリクエストをルーティングできます。メッセージをグローバル エンドポイントにパブリッシュすると、Pub/Sub サービスは、十分な割り当てがないリージョンにトラフィックをルーティングすることがあります。
割り当て使用量の不一致
割り当て使用量の不一致は、パブリッシュまたは受信されるメッセージのサイズが、1,000 バイトより小さい場合に発生することがあります。次に例を示します。
10 件の 500 バイトのメッセージを個別のリクエストでパブリッシュすると、パブリッシャーの割り当て使用量は 10,000 バイトになります。これは、1,000 バイトより小さいメッセージは自動的に 1,000 バイトに切り上げられるためです。
これら 10 件のメッセージを 1 つの pull レスポンスで受信する場合、サブスクライバーの割り当て使用量は 5 KB になります。これは、各メッセージの実際のサイズを合計した数値が全体の使用量となるためです。
その逆も当てはまります。複数のメッセージを 1 つのパブリッシュ リクエストでパブリッシュしたり、個別の pull リクエストで複数のメッセージを受信したりすると、サブスクライバーの割り当て使用量がパブリッシャーの割り当て使用量より大きくなる場合があります。