API に応じて、1 日あたりのリクエスト数、1 分あたりのリクエスト数、ユーザーごとの 1 分あたりのリクエスト数などを制限することで、リクエストの上限を明示的に設定できます。
これらは API 固有の使用上限です。たとえば、無料枠を超えた使用量に対する課金を回避するため、1 日あたりのリクエスト数の上限を設定できます。
これらの上限は、特定のサービス量の詳細な制御を目的としており、プロジェクト全体の費用上限として機能するように設計されていません。プロジェクト全体または請求先アカウントで予期しない費用が発生しないようにするには、予算と予算アラートの作成、編集、削除をご覧ください。
リクエスト数の上限を表示して変更する
請求可能な API に対するすべてのリクエストに制限を設定できます。ほとんどの API ではデフォルトの制限が設定されていますが、Google が指定する最大値までその制限を変更できます。一部の API では、プロジェクトで課金を有効にするまで、低い値が設定されています。
API の制限を表示または変更する手順は次のとおりです。
- Google Cloud コンソールで、[API とサービスのダッシュボード] ページに移動します。
- プロジェクト リストからプロジェクトを選択するか、新しいプロジェクトを作成します。
- 対象の API の名前をクリックします。
- [割り当て] をクリックします。タブナビに [割り当て] タブが表示されていないことは、選択した API で割り当てが定義されていないことを意味します。
- 上限となる割り当てを見つけるには、[フィルタ] フィールドに適切なプロパティと値を入力します。たとえば、サブネットワークの割り当てを見つけるには、「Quota:Subnetworks」と入力します。
- 上限とする割り当ての横にあるチェックボックスをクリックしてから、[ 割り当てを編集] をクリックします。
- 割り当て変更フォームに、設定する新しい上限を記入します。
- [リクエストを送信] をクリックします。
一部の API では、フォームを提出することによって、制限を上げるようにリクエストできます。一部の API では、プロジェクトで課金が有効になっている場合にのみ、割り当てを増やすことができます。
ユーザーごとのリクエスト数の制限
個々のユーザーが API 割り当てを使い切ることを防ぐために、一部の API では、ユーザーごとの 1 分あたりの上限がデフォルトで設定されています。
API に 1 分あたりのユーザーごとのデフォルトの上限値が含まれているかどうかを確認するには、リクエスト数の上限を参照および変更するの手順に沿って API の割り当てを確認します。API にこのようなデフォルトの上限値が存在する場合は、この手順に沿って値を変更し、各ユーザーが利用できる割り当てを制限できます。API の割り当てにこのデフォルトの上限がない場合、その上限の追加や変更はサポートされません。
デフォルトでは、システムは認証済みのプリンシパルを使用して個々のユーザーを一意に識別します。認証されたプリンシパルには、OAuth トークンを使用するユーザー アカウント、サービス アカウント、またはフェデレーション Workload Identity が含まれます。認証済みのプリンシパルが存在しない場合、システムはクライアントの IP アドレスを使用します。このフォールバック動作はデフォルトで有効になっているため、ユーザー ID を指定しなくても、ユーザーごとの割り当てが適用されます。
クライアント IP アドレスのフォールバックの使用には、次の 2 つの重要な制限があります。
- 共有パブリック IP: ネットワーク アドレス変換(NAT)ゲートウェイまたはプロキシ(学校のオフィスや VPN エンドポイントなど)の背後にいる複数のユーザーが、1 つのパブリック IP アドレスを共有します。リクエストは同じ割り当てバケットにプールされるため、割り当てが早期に枯渇する可能性があります。
- IP ベースの回避: 大量の IPv6 アドレスまたは VPN プロキシにアクセスできるユーザーは、クライアント IP アドレスをローテーションしてレート制限を回避できるため、IP フォールバックは不正使用に対する堅牢な保護には信頼性がありません。
呼び出し側のコードが所有しているサーバー上でホストされているサーバーサイド アプリケーションから、複数のユーザーに代わって API を呼び出す場合、単一の認証済みプリンシパルを使用すると、すべての呼び出しがその単一のプリンシパルに割り当てられます。この場合、個々のユーザーからの通話に個別に上限を設定することはできません。これを防ぐには、リクエストで quotaUser パラメータまたは X-Goog-Quota-User ヘッダーを指定して、デフォルトのユーザー識別とパーティション割り当ての使用量をオーバーライドします。これらは、システム パラメータのドキュメントで定義されています。
quotaUser パラメータまたは X-Goog-Quota-User ヘッダーを使用してデフォルトのユーザー ID をオーバーライドするには、IP アドレス制限や HTTP リファラー制限などのサービス制限がある有効な API キーを使用して、割り当てプロジェクトを識別する必要があります。それ以外の場合、パラメータまたはヘッダーは無視され、システムはデフォルトのユーザー識別に戻ります。
ユーザーを識別するには、quotaUser=userID URL クエリ パラメータを使用します。この値は短期の割り当ての適用のみに使用されるため、実際のユーザー ID を使用する必要はありません。ユーザーを一意に識別する 40 文字以内の任意の文字列を選択できます。
ユーザーのプライバシーを保護し、指標の量を制限するため、 Google Cloud コンソールと Cloud Monitoring は、個々の quotaUser または IP アドレスによって解析されたテレメトリーを保存または表示しません。プロジェクトの割り当て上限と合計使用量は確認できますが、特定のユーザーをモニタリングしたり、オーバーライドしたり、アラートを構成したりすることはできません。
API に 1 分あたりのユーザーごとのデフォルトの上限値が含まれていない場合、quotaUser 値は無視されます。
プロジェクト内の API のすべての割り当てを表示および編集する
特定のプロジェクト内の課金可能なすべての API について、Google Cloud コンソールで IAM と管理者セクションの割り当てページを表示して、割り当て制限の確認、編集、制限の緩和をリクエストできます。
プロジェクト内のすべての課金可能 API の割り当てを表示したり編集したりするには、次の手順を実行します。
- Google Cloud コンソールで、[割り当て] ページに移動します。
- プロジェクト リストからプロジェクトを選択するか、新しいプロジェクトを作成します。 選択したプロジェクトの [割り当て] ページが開き、各サービスで使用できる割り当ての種類ごとに 1 行の項目を含むリストが表示されます。
- [表をフィルタリング] をクリックして、特定のプロパティで割り当てをクエリします。
- 編集する割り当ての横にあるチェックボックスをオンにします。チェックボックスをオンにするには、プロジェクトで課金を有効にする必要があります。
- [割り当てを編集] をクリックします。
- 表示された [割り当ての変更] ペインで、サービスビューを展開し、必要に応じてそのサービスの割り当てを編集して、[完了] をクリックします。
- 選択した各サービスで同じ手順を繰り返して割り当てを編集します。
- 入力ボックスには、現在の割り当て上限が事前に入力されています。
- 送信時にアラート アイコン()が表示されるサービスには、入力エラーがあります。
- 割り当ては、前述の通りに選択することで、それを編集して追加できます。
- [割り当ての変更] ペインで、展開されていないサービスビューにカーソルを合わせて削除アイコン()をクリックすると、サービスを削除できます。
- 割り当ての編集が完了したら、[次へ] をクリックします。
- 割り当ての編集リクエストを確認する必要がある場合は、[連絡先の詳細情報] フォームが表示されます。連絡先の詳細情報をフォームに記入します。
- [リクエストを送信] をクリックします。