Visão geral do projeto de cotas

Neste documento, descrevemos o projeto de cota e como ele é determinado. Verifique se o projeto de cota está definido corretamente para evitar erros e solicitações com falha para as APIs do Cloud.

É preciso especificar um projeto de cota porque cada solicitação a uma API Google Cloud é contabilizada em uma cota, e as cotas são aplicadas por projeto. Para mais informações, consulte Como definir o projeto de cota .

Observação para usuários da CLI gcloud: às vezes, o projeto de cota é chamado de projeto de faturamento. Isso acontece porque a sinalização billing_project tem precedência sobre a propriedade billing/quota_project na configuração da gcloud CLI.

Como o projeto de cota é determinado

A forma como o projeto de cota é determinado depende do tipo de método de API que você usa: API baseada em recursos ou API baseada no cliente. Em casos raros, um serviço pode ter os dois tipos de métodos de API.

APIs baseadas em recursos

Para APIs do Cloud com base em recursos, o projeto que fornece cota para uma chamada de API também é aquele que contém o recurso que está sendo acessado. Por exemplo, ao criar uma instância do Compute Engine, especifique o projeto dela. O projeto contém a instância recém-criada. Depois, se você executar operações na instância do Compute Engine, o projeto que contém a instância fornecerá a cota para a solicitação. Isso se aplica independentemente de você usar a Google Cloud CLI, a API REST ou as bibliotecas de cliente.

Não é possível alterar o projeto de cota usado por uma solicitação para uma API baseada em recursos. A solicitação sempre usa o projeto que contém o recurso em que a solicitação está operando.

APIs baseadas em cliente

Caso a API não seja baseada em recursos, trata-se de uma API baseada em cliente. Por exemplo, a API Cloud Translation é uma API baseada em cliente usada com frequência.

As solicitações podem falhar se você fizer uma solicitação a uma API baseada em cliente e não for possível identificar o projeto de cota. O projeto de cota pode ser definido de várias maneiras e é verificado nas opções a seguir. Elas aparecem na ordem de precedência:

  • Especificado na solicitação: o projeto de cota especificado na solicitação. Ao usar bibliotecas de cliente, você também pode usar variáveis de ambiente nas solicitações.

  • Chave de API: se você usar uma chave de API para fornecer credenciais a uma solicitação, o projeto associado a ela será usado como projeto de cota.

  • Credenciais da CLI gcloud: se você usa a CLI gcloud para receber o token de acesso e fez a autenticação na CLI gcloud com suas credenciais de usuário, o projeto compartilhado da CLI gcloud às vezes é usado como o projeto de cota. No entanto, nem todas as APIs baseadas em cliente recorrem ao projeto compartilhado.

  • Conta de serviço: se o principal da chamada de API for uma conta de serviço, inclusive por representação, o projeto associado a ela será usado como o projeto de cota.

  • Federação de identidade de colaboradores: se o principal da API for um usuário da federação de identidade de colaboradores, o projeto de usuário dos pools de força de trabalho será usado como o projeto de cota.

Se nenhuma das verificações anteriores resultar em um projeto de cota, a solicitação falhará.

Sobre o projeto compartilhado da CLI gcloud para APIs baseadas em cliente

Se você usar a CLI gcloud para fazer uma solicitação a uma API baseada em cliente sem definir o projeto de cota, a solicitação poderá recorrer ao projeto compartilhado da CLI gcloud ou a solicitação poderá falhar. O projeto compartilhado da CLI gcloud é usado por todas as solicitações da CLI gcloud em todos os projetos. Portanto, se muitas outras solicitações da CLI gcloud também estiverem usando esse projeto como projeto de cota, a cota do projeto compartilhado poderá ser temporariamente esgotada. Se isso acontecer, sua solicitação vai falhar com uma mensagem de erro fora da cota.

Identificar o projeto de cota atual para APIs baseadas em cliente

O método para identificar o projeto de cota depende de como seu projeto está configurado:

  • Se um método de API estiver configurado para usar uma API baseada em recursos, o projeto do cliente usará o projeto de recursos como projeto de cota.

  • Se uma substituição do projeto do usuário estiver em vigor, use o comando gcloud [command] --log-http para imprimir um registro e verificar o projeto de cota que aparece no campo x-goog-user-project.

  • Se uma chave de API foi usada para autenticação, use o comando gcloud [command] --log-http para imprimir um registro e verificar o projeto de cota que aparece no campo x-goog-api-key.

Para outras configurações, o projeto de cota não aparece nos cabeçalhos HTTP.

Determinar se uma API é baseada em recursos ou no cliente

Pode ser difícil determinar que tipo de API você está usando. No entanto, a ativação e as cotas são aplicadas da mesma maneira. Por exemplo, se uma conta de serviço do projeto A chamar um método de leitura no projeto B e a API não estiver ativada em nenhum dos projetos, a mensagem de erro API not enabled indicará qual projeto será verificado para ativação. O projeto verificado para ativação é o mesmo que foi verificado quanto à cota de taxa.

A seguir