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-requests
ouwrite-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_rule
mapeia 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.yaml
do projeto num editor de texto. Adicione o campo
metrics
ao 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_NAME
por um nome que descreva o contador de pedidos de API. - Substitua
YOUR_METRIC_DISPLAY_NAME
pelo texto apresentado na página Endpoints > Serviços > Quotas para identificar a métrica. - O campo
value_type
tem de serINT64
. - O campo
metric_kind
tem de serDELTA
.
- Substitua
Adicione um campo
quota
ao mesmo nível quemetrics
e adicione um campolimits
aninhado 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_NAME
por um nome que descreva o limite. - Substitua
YOUR_METRIC_NAME
por ummetric.name
definido anteriormente. - O campo
unit
tem de ser"1/min/{project}"
. Este é o identificador do limite por minuto por projeto. - O campo
values
tem de conterSTANDARD
. - Substitua
VALUE_FOR_THE_LIMIT
por 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_rules
abaixo 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_NAME
por ummetric.name
definido anteriormente. - Substitua
YOUR_METRIC_COST
por 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_cost
useselector: 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.yaml
na 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.