本页介绍了如何使用配额项目以及如何确定项目。确保您的配额项目设置正确有助于避免向 Google Cloud API 发出的失败请求以及不必要的配额错误。
对 Google Cloud API 发出的每个请求都会计入配额。因为每个项目都强制设有配额,这意味着每个请求都需要有项目来提供配额。该项目称为“配额项目”。它有时也称为“结算项目”。结算项目和配额项目属于同一项目。如需了解详情,请参阅如何设置配额项目。
如何确定配额项目
确定配额项目的方式取决于您使用的 API 类型:基于资源的 API 或基于客户端的 API。
基于资源的 API
对于基于资源的 Google Cloud API,为 API 调用提供配额的项目也是包含正在访问的资源的项目。例如,创建 Compute Engine 实例时,您必须为该新实例指定项目。然后,该项目包含新创建的实例。稍后,如果您在 Compute Engine 实例上执行操作,则包含该实例的项目将提供请求的配额。无论您使用的是 Google Cloud CLI、REST API 还是客户端库,这一点都适用。
您无法将请求使用的配额项目更改为基于资源的 API。 请求始终使用包含操作所处理资源的项目。
基于客户端的 API
如果 API 不是基于资源的 API,则是基于客户端的 API。例如,Cloud Translation API 是一种常用的基于客户端的 API。
向基于客户端的 API 发出请求时,如果无法识别配额项目,则请求会失败。
配额项目可以采用多种方式设置,系统会通过检查以下选项来验证项目。列出的顺序是优先顺序。
- 在环境或请求中设置的配额项目。
- 如果您使用 API 密钥为请求提供凭据,则与 API 密钥关联的项目将用作配额项目。
- 如果您使用 Google Cloud CLI 获取访问令牌,并且已使用用户凭据向 gcloud CLI 进行身份验证,则 gcloud CLI 共享项目有时用作配额项目。 并非所有基于客户端的 API 都依赖于共享项目。
- 如果 API 调用的主账号是服务账号(包括通过模拟),则与服务账号关联的项目将用作配额项目。
- 如果 API 的主账号是员工身份联合用户,则系统会将员工池用户项目用作配额项目。
如果以上检查均未产生配额项目,则请求失败。
关于基于客户端的 API 的 gcloud CLI 共享项目
如果您使用 gcloud CLI 向基于客户端的 API 发出请求而不设置配额项目,则请求可能会回退到 gcloud CLI 共享项目或该请求可能会失败。 所有项目中的所有 gcloud CLI 请求都使用 gcloud CLI 共享项目,因此,如果许多其他 gcloud CLI 请求也将此项目用作其配额项目,则共享项目的配额可能临时耗尽。如果发生这种情况,您的请求将失败,并显示配额不足错误消息。
确定基于客户端的 API 的当前配额项目
如需确定用于 gcloud CLI 命令的项目,请在 gcloud CLI 中添加 --log-http
标志以输出该命令的标头。日志会将此命令使用的项目作为配额项目添加到 X-Goog-User-Project
字段中。
确定 API 是基于资源还是基于客户端
您可能很难确定您正在使用的 API 类型。但是,激活和配额的执行方式相同。如果项目 A 中的服务账号调用项目 B 中的读取方法,并且两个项目都未启用 API,则 API not enabled
错误消息会指示检查哪个项目进行激活。检查激活的项目与检查速率配额的项目相同。