Gerir a quota de consumidor

Esta página descreve como usar a API Service Consumer Management para ver e substituir os limites de quota aplicados a consumidores individuais do seu serviço.

Certifique-se de que se familiariza com o modelo de quota de serviço para compreender melhor a terminologia usada neste tutorial.

Para programar com base na API Service Infrastructure, recomendamos que use uma das bibliotecas cliente fornecidas por nós. Para experimentar a API, pode seguir as instruções neste guia e usar o comando curl para testar a API sem configurar um ambiente de desenvolvimento de aplicações completo.

Apresente a quota de serviço

Para apresentar as métricas e os limites de quotas de serviços, siga estes passos:

  1. Para usar gcurl, execute o seguinte comando alias com o token de autenticação:

    alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    

    Para mais informações, consulte o artigo Ative a API Service Usage.

  2. Para ver todos os limites de quota em todas as métricas que se aplicam a um consumidor específico, use o seguinte método:

    gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/services/SERVICE_NAME/projects/PROJECT_ID/consumerQuotaMetrics
    

    Substitua o seguinte:

    • SERVICE_NAME: o nome do seu serviço.
    • PROJECT_ID: o ID do projeto de consumidor de interesse.

    Esta chamada responde com uma lista de métricas definidas pelo serviço, cada uma com a lista de limites dessas métricas que se aplicam a este consumidor, os valores desses limites e quaisquer substituições. Segue-se um exemplo de resposta:

    {
      "metrics": [
        {
          "name": "services/myservice.appspot.com/projects/consumer-project-id/consumerQuotaMetrics/airport_requests",
          "metric": "airport_requests",
          "displayName": "Airport Requests",
          "consumerQuotaLimits": [
            {
              "name": "services/myservice.appspot.com/projects/consumer-project-id/consumerQuotaMetrics/airport_requests/limits/%2Fmin%2Fproject",
              "metric": "airport_requests",
              "unit": "1/min/{project}",
              "quotaBuckets": [
                {
                  "effectiveLimit": "5",
                  "defaultLimit": "5",
                }
              ]
            }
          ],
        }
      ]
    }
    
  3. Cada métrica na resposta tem um campo de nome. Para inspecionar as definições de quota apenas para essa métrica, em vez de para todas as métricas, use o respetivo nome no URL:

    gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/METRIC_NAME
    

    Substitua METRIC_NAME pelo nome totalmente qualificado da métrica. Por exemplo:

    services/myservice.appspot.com/projects/consumer-project-id/consumerQuotaMetrics/airport_requests

  4. Cada limite numa métrica tem um campo de nome. Para inspecionar as definições de quota apenas para esse limite nessa métrica, em vez de para todos os limites numa métrica ou em todas as métricas, use o respetivo nome no URL:

    gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/LIMIT_NAME
    

    Substitua LIMIT_NAME pelo nome totalmente qualificado do limite. Por exemplo:

    services/myservice.appspot.com/projects/consumer-project-id/consumerQuotaMetrics/airport_requests/limits/%2Fmin%2Fproject

Aplique uma substituição do produtor

O proprietário ou o administrador de um serviço pode aplicar uma substituição do produtor a um limite específico para um consumidor específico, concedendo um aumento da quota nesse limite.

  1. Para identificar um limite, use primeiro um dos métodos anteriores para encontrar o limite de quota do seu interesse e use o respetivo campo de nome para lhe aplicar uma substituição do produtor:

    gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/LIMIT_NAME/producerOverrides -d '{"override": {"override_value": "12345"} }'
    

    Esta chamada pode ser usada para aplicar uma nova substituição ou atualizar uma substituição existente para um novo valor. Para conceder uma quota ilimitada num limite, use "-1" como valor de substituição.

    Se a chamada for bem-sucedida, devolve um identificador de operação, que representa o trabalho em curso no servidor, à medida que a alteração da quota se propaga aos sistemas de back-end:

    {
      "name": "operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
    }
    
  2. Para verificar o progresso da operação, use o respetivo nome:

    gcurl https://serviceconsumermanagement.googleapis.com/v1/OPERATION_NAME
    

    Quando esta chamada responde com uma mensagem que inclui "done":true, a operação está concluída. Se a operação falhar, a mensagem inclui detalhes do erro.

    Também pode verificar se uma alteração foi aplicada repetindo a chamada get original no limite específico. O limite tem agora de ter um campo producerOverride adicional.

Forçar alterações significativas à quota

Se uma substituição fizer com que a quota aplicada diminua mais de 10%, a chamada é rejeitada como medida de segurança para evitar a diminuição acidental da quota demasiado rapidamente. Para ignorar esta restrição, use a flag force:

gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/LIMIT_NAME/producerOverrides -d '{"override": {"override_value": "0"}, "force": true}'

Aplique substituições de quotas regionais ou zonais

Alguns limites de quota são aplicados por região ou por zona. Isto é indicado pela presença de /{region} ou /{zone} na unidade de limite.

A aplicação de uma substituição a esse limite altera a quota base em todas as regiões ou zonas. Para alterar a quota apenas para uma região ou uma zona específica, use o campo location:

gcurl https://serviceconsumermanagement.googleapis.com/v1beta1/LIMIT_NAME/producerOverrides -d '{"override": {"override_value": "135", "dimensions": {"region": "asia-south1"} } }'