配额项目概览

本文档介绍了配额项目以及如何确定配额项目。请确保您的配额项目设置正确,以避免出现错误以及向 Cloud API 发出的请求失败。

您必须指定配额项目,因为对 Trusted Cloud by S3NS API 发出的每个请求都会计入配额,并且配额是按项目强制执行的。如需了解详情,请参阅如何设置配额项目

gcloud CLI 用户注意事项:配额项目有时称为结算项目。这是因为 billing_project 标志优先于 gcloud CLI 配置中的 billing/quota_project 属性

如何确定配额项目

确定配额项目的方式取决于您使用的 API 方法的类型:基于资源的 API 或基于客户端的 API。在极少数情况下,某项服务可能同时具有这两种类型的 API 方法。

基于资源的 API

对于基于资源的 Cloud API,为 API 调用提供配额的项目也是包含正在访问的资源的项目。例如,创建 Compute Engine 实例时,您必须为该新实例指定项目。然后,该项目包含新创建的实例。稍后,如果您在 Compute Engine 实例上执行操作,则包含该实例的项目将提供请求的配额。无论您使用的是 Google Cloud CLI、REST API 还是客户端库,这一点都适用。

您无法将请求使用的配额项目更改为基于资源的 API。 请求始终使用包含操作所处理资源的项目。

基于客户端的 API

如果 API 不是基于资源的 API,则是基于客户端的 API。例如,Cloud Translation API 是一种常用的基于客户端的 API。

如果您向基于客户端的 API 发出请求,但无法识别配额项目,则请求可能会失败。配额项目可以采用多种方式设置,系统会通过检查以下选项来验证项目。它们按优先级顺序显示:

  • 在请求中指定:在请求中指定的配额项目。 (使用客户端库时,您还可以在请求中使用环境变量。)

  • API 密钥:如果您使用 API 密钥为请求提供凭证,则与 API 密钥关联的项目将用作配额项目。

  • Google Cloud CLI 凭证:如果您使用 gcloud CLI 获取访问令牌,并且已使用用户凭证向 gcloud CLI 进行身份验证,则 gcloud CLI 共享项目有时用作配额项目。但是,并非所有基于客户端的 API 都依赖于共享项目。

  • 服务账号:如果 API 调用的主账号是服务账号(包括通过模拟),则与服务账号关联的项目将用作配额项目。

  • 员工身份联合:如果 API 的主账号是员工身份联合用户,则系统会将员工池用户项目用作配额项目。

如果以上检查均未产生配额项目,则请求失败。

关于基于客户端的 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 错误消息会指示检查哪个项目进行激活。检查激活的项目与检查速率配额的项目相同。

后续步骤