このページでは、割り当てプロジェクトと割り当てプロジェクトの決定方法について説明します。割り当てプロジェクトが正しく設定されていることを確認して、エラーや Cloud APIs へのリクエストの失敗を回避します。
Google Cloud API に対するリクエストはすべて割り当てを使用し、割り当てはプロジェクトごとに適用されるため、割り当てプロジェクトを指定する必要があります。詳細については、割り当てプロジェクトの設定方法をご覧ください。
gcloud CLI ユーザー向けのメモ: 割り当てプロジェクトは、請求先プロジェクトと呼ばれることもあります。これは、gcloud CLI 構成の billing/quota_project
プロパティよりも billing_project
フラグが優先されるためです。
割り当てプロジェクトの決定方法
割り当てプロジェクトの決定方法は、使用する API メソッドのタイプ(リソースベースの API かクライアント ベースの API か)によって異なります。まれに、サービスに両方のタイプの API メソッドが存在することがあります。
リソースベースの API
リソースベースの Cloud APIs の場合、API 呼び出しの割り当てを提供するプロジェクトは、アクセスされるリソースが存在するプロジェクトになります。たとえば、Compute Engine インスタンスを作成するときは、その新しいインスタンスのプロジェクトを指定する必要があります。新しく作成されたインスタンスはそのプロジェクトに含まれます。後で Compute Engine インスタンスでオペレーションを実行すると、そのインスタンスを含むプロジェクトによってリクエストの割り当てが提供されます。これは、Google Cloud CLI、REST API、クライアント ライブラリのいずれを使用する場合でも同様です。
リソースベースの API へのリクエストで使用される割り当てプロジェクトは変更できません。リクエストは常に、リクエストが操作されるリソースを含むプロジェクトを使用します。
クライアント ベースの API
リソースベースの API でない場合はクライアント ベースの API です。たとえば、Cloud Translation API はよく使用されるクライアント ベースの API です。
クライアント ベースの API にリクエストを送信するときに割り当てプロジェクトを特定できない場合、そのリクエストは失敗する可能性があります。割り当てプロジェクトは複数の方法で設定できます。プロジェクトは、次のオプションを確認することで検証されます。優先度の高い順に表示されます。
リクエストで指定: リクエストで指定された割り当てプロジェクト(クライアント ライブラリを使用する場合は、リクエストで環境変数を使用することもできます)。
API キー - API キーを使用してリクエストの認証情報を提供すると、その API キーに関連付けられたプロジェクトが割り当てプロジェクトとして使用されます。
Google Cloud CLI の認証情報: gcloud CLI を使用してアクセス トークンを取得し、ユーザー認証情報で gcloud CLI に対して認証を行っている場合は、gcloud CLI 共有プロジェクトが割り当てプロジェクトとして使用されることがあります。ただし、すべてのクライアント ベースの API が共有プロジェクトにフォールバックするわけではありません。
サービス アカウント: API 呼び出しのプリンシパルがサービス アカウントの場合(権限借用などにより)、サービス アカウントに関連付けられたプロジェクトが割り当てプロジェクトとして使用されます。
Workforce Identity 連携: API のプリンシパルが Workforce Identity 連携ユーザーの場合、Workforce プールのユーザー プロジェクトが割り当てプロジェクトとして使用されます。
これらのチェックで割り当てプロジェクトが見つからない場合、リクエストは失敗します。
クライアント ベースの API の gcloud CLI 共有プロジェクトについて
gcloud CLI を使用して、割り当てプロジェクトを設定せずにクライアントベースの API にリクエストを送信すると、リクエストは gcloud CLI 共有プロジェクトにフォールバックするか、失敗する可能性があります。 gcloud CLI 共有プロジェクトは、すべてのプロジェクトのすべての gcloud CLI リクエストで使用されるため、ほかの多くの gcloud CLI リクエストでもこのプロジェクトが割り当てプロジェクトとして使用されている場合、共有プロジェクトの割り当てが一時的に枯渇する可能性があります。この場合、リクエストは割り当て不足のエラー メッセージを返して失敗します。
クライアント ベースの API の現在の割り当てプロジェクトを確認する
割り当てプロジェクトを特定する方法は、プロジェクトの構成方法によって異なります。
リソースベースの API を使用するように API メソッドが構成されている場合、クライアント プロジェクトはリソース プロジェクトを割り当てプロジェクトとして使用します。
ユーザー プロジェクトのオーバーライドが設定されている場合は、
gcloud [command] --log-http
コマンドを使用してログを出力し、x-goog-user-project
フィールドに表示される割り当てプロジェクトを確認します。認証に API キーが使用された場合は、
gcloud [command] --log-http
コマンドを使用してログを出力し、x-goog-api-key
フィールドに表示される割り当てプロジェクトを確認します。
他の構成では、割り当てプロジェクトは HTTP ヘッダーに表示されません。
API がリソースベースかクライアント ベースかを特定する
使用している API のタイプを判断するのが難しい場合があります。ただし、有効化と割り当ては同じように適用されます。たとえば、プロジェクト A のサービス アカウントがプロジェクト B の読み取りメソッドを呼び出し、どちらのプロジェクトでも API が有効になっていない場合、API not enabled
エラー メッセージが返され、有効かどうかを確認したプロジェクトが示されます。有効化が確認されるプロジェクトは、レートに基づく割り当てで確認されるプロジェクトと同じです。
次のステップ
割り当てプロジェクトの設定方法を確認する
アプリケーションのデフォルト認証情報について学習する
認証の詳細を確認する
割り当てについて学習する
gcloud CLI ユーザーの場合:
- gcloud CLI の構成の詳細については、
gcloud config
のリファレンス ページをご覧ください。 --billing_project
フラグの詳細については、Google Cloud SDK リファレンスをご覧ください。
- gcloud CLI の構成の詳細については、