Esta página descreve como configurar quotas para a sua API. A um nível elevado, os passos são os seguintes:
- Adicione as informações sobre a quota ao ficheiro de configuração da API gRPC.
- Implemente o ficheiro de configuração da API gRPC.
- Implemente o proxy de serviço extensível (ESP).
Para uma vista geral da funcionalidade fornecida pelas quotas, consulte o artigo Acerca das quotas.
Pré-requisitos
Como ponto de partida, esta página pressupõe que:
- Cloud Endpoints configurados.
- Implementou a configuração dos Endpoints.
- Implementou o back-end da API.
- Configurou a sua API para usar uma chave da API. Isto é necessário para que os pontos finais identifiquem o Google Cloud projeto ao qual a aplicação de chamada está associada. Consulte o artigo Partilhar APIs protegidas por chave da API para mais informações.
Adicionar uma quota ao ficheiro de configuração da API gRPC
O procedimento seguinte descreve como adicionar as definições necessárias ao ficheiro de configuração da API gRPC para configurar quotas. Para simplificar, esta página refere-se ao ficheiro de configuração da API gRPC como o ficheiro api_config.yaml.
Adicione as três secções seguintes ao ficheiro api_config.yaml:
metrics: uma métrica com nome que contabiliza os pedidos à sua API. Indica um nome que descreve o contador. O nome pode ser uma categoria, comoread-requestsouwrite-requests. Em alternativa, se estiver a definir uma quota para um método específico, é recomendável incluir o nome do método, por exemplo,echo-api/echo_requests.quota.limits: representa um único limite aplicável numa métrica com nome. É aqui que configura o número permitido de pedidos para uma métrica que definiu. Atualmente, apenas são suportados limites por minuto e por projeto.quota.metric_rules: ummetric_rulemapeia métodos para métricas (muitos para muitos). Um pedido a um método atribui um contador a cada uma das métricas mapeadas. Quando associa um método a uma métrica, especifica sempre um custo para o pedido. Pode configurar o custo de cada método de forma independente. Isto permite que diferentes métodos consumam a métrica com o mesmo nome a taxas diferentes. Se não tiver um requisito de quota complexo, pode configurar o custo de cada métrica para 1.
Para configurar quotas na sua API:
- Abra o ficheiro
api_config.yamldo projeto num editor de texto. Adicione o campo
metricsao nível superior do ficheiro (sem recuo nem aninhamento), após o campoapis.`metrics: - name: "YOUR_METRIC_NAME" display_name: "YOUR_METRIC_DISPLAY_NAME" value_type: INT64 metric_kind: DELTA`- Substitua
YOUR_METRIC_NAMEpor um nome que descreva o contador de pedidos de API. - Substitua
YOUR_METRIC_DISPLAY_NAMEpelo texto apresentado na página Endpoints > Serviços > Quotas para identificar a métrica. - O campo
value_typetem de serINT64. - O campo
metric_kindtem de serDELTA.
- Substitua
Adicione um campo
quotaao mesmo nível quemetricse adicione um campolimitsaninhado na secçãoquota.quota: limits: - name: "YOUR_LIMIT_NAME" metric: "YOUR_METRIC_NAME" unit: "1/min/{project}" values: STANDARD: VALUE_FOR_THE_LIMIT- Substitua
YOUR_LIMIT_NAMEpor um nome que descreva o limite. - Substitua
YOUR_METRIC_NAMEpor ummetric.namedefinido anteriormente. - O campo
unittem de ser"1/min/{project}". Este é o identificador do limite por minuto por projeto. - O campo
valuestem de conterSTANDARD. - Substitua
VALUE_FOR_THE_LIMITpor um valor inteiro. Este é o número de pedidos que uma aplicação associada ao projeto de um consumidor pode fazer num minuto. Google Cloud
- Substitua
Opcionalmente, defina métricas e limites adicionais para cada métrica.
Adicione uma linha com recuo de
metric_rulesabaixo dequota, após a secçãolimits. Na secçãometric_rules, associe uma métrica definida anteriormente a um método, da seguinte forma:metric_rules: - metric_costs: YOUR_METRIC_NAME: YOUR_METRIC_COST selector: [METHODS]- Substitua
YOUR_METRIC_NAMEpor ummetric.namedefinido anteriormente. - Substitua
YOUR_METRIC_COSTpor um número inteiro. Para cada pedido, o contador de pedidos da métrica é incrementado pelo número que especificar para o custo. Para o campo
selector, pode especificar uma das seguintes opções:- Para associar todos os métodos em todas as APIs ao
metric_cost, useselector: "*" - Para associar todos os métodos numa API ao
metric_cost, useselector: YOUR_API_NAME.* - Para associar um método específico numa API ao
metric_costuseselector: YOUR_API_NAME.YOUR_METHOD_NAME
- Para associar todos os métodos em todas as APIs ao
- Substitua
Guarde o ficheiro
api_config.yaml.
Exemplos de configuração de quotas
Os três exemplos seguintes mostram como configurar quotas na sua API.
O exemplo seguinte mostra como configurar o campo metric:
metrics: # Define a metric for read requests. - name: "read-requests" display_name: "Read requests" value_type: INT64 metric_kind: DELTA`
O exemplo seguinte mostra como configurar os campos quota e limits na secção quota:
metrics: # Define a metric for read requests. - name: "read-requests" display_name: "Read requests" value_type: INT64 metric_kind: DELTA quota: limits: # Define the limit or the read-requests metric. - name: "read-limit" metric: "read-requests" unit: "1/min/{project}" values: STANDARD: 1000
O exemplo seguinte mostra como configurar a linha metrics após a secção
limits:
metrics:
# Define a metric for read requests.
- name: "read-requests"
display_name: "Read requests"
value_type: INT64
metric_kind: DELTA
quota:
limits:
# Define the limit or the read-requests metric.
- name: "read-limit"
metric: "read-requests"
unit: "1/min/{project}"
values:
STANDARD: 1000
metric_rules:
- metric_costs:
"read-requests": 1
selector: *
Implementar o ficheiro api_config.yaml e o SEP
Para que a quota entre em vigor, tem de:
- Implemente o ficheiro
api_config.yamlna gestão de serviços, o que atualiza a configuração nos pontos finais. Para ver os passos detalhados, consulte o artigo Implementar a configuração do Endpoints. - Implemente o ESP. Para ver passos detalhados, consulte o artigo Implementar o back-end da API.