En esta página se explica cómo puedes configurar las cuotas de tu API. A grandes rasgos, estos son los pasos que debes seguir:
- Añadir información sobre la cuota en el archivo de configuración de la API de gRPC.
- Desplegar dicho archivo.
- Despliega el proxy de servicios extensible (ESP).
Para obtener información general sobre las funciones que ofrecen las cuotas, consulta Información sobre las cuotas.
Requisitos previos
Para empezar, en esta página se presupone que tienes lo siguiente:
- Cloud Endpoints configurado.
- Desplegar la configuración de Endpoints.
- Desplegar el backend de la API.
- Has configurado tu API para que use una clave de API. Es necesario para que Endpoints identifique el Google Cloud proyecto Google Cloud al que está asociada la aplicación que llama. Consulta más información sobre cómo compartir APIs protegidas por claves de API.
Añadir una cuota al archivo de configuración de la API gRPC
En el siguiente procedimiento se describe cómo añadir los ajustes necesarios al archivo de configuración de la API gRPC para configurar las cuotas. Para simplificar, en esta página se hace referencia al archivo de configuración de la API gRPC como archivo api_config.yaml
.
Añade las tres secciones siguientes al archivo api_config.yaml
:
metrics
: una métrica con nombre que cuenta las solicitudes a tu API. Proporciona un nombre que describa el contador. El nombre puede ser una categoría, comoread-requests
owrite-requests
. Si vas a definir una cuota para un método específico, puedes incluir el nombre del método, por ejemplo,echo-api/echo_requests
.quota.limits
: representa un único límite aplicable en una métrica con nombre. Aquí es donde se configura el número permitido de solicitudes de una métrica que hayas definido. Actualmente, solo se admiten límites por minuto y por proyecto.quota.metric_rules
: asignametric_rule
métodos a métricas (relación de muchos a muchos). Una solicitud a un método asigna un contador a cada una de las métricas asignadas. Cuando asocias un método a una métrica, siempre especificas un coste para la solicitud. Puede configurar el coste de cada método de forma independiente. Esto permite que diferentes métodos consuman a diferentes ritmos la misma métrica. Si no tienes un requisito de cuota complejo, puedes configurar el coste de cada métrica en 1.
Para configurar las cuotas de tu API:
- Abre el archivo
api_config.yaml
de tu proyecto en un editor de texto. Añade el campo
metrics
en el nivel superior del archivo (sin sangría ni anidación), después del campoapis
.`metrics: - name: "YOUR_METRIC_NAME" display_name: "YOUR_METRIC_DISPLAY_NAME" value_type: INT64 metric_kind: DELTA`
- Sustituye
YOUR_METRIC_NAME
por un nombre que describa el contador de solicitudes de API. - Sustituye
YOUR_METRIC_DISPLAY_NAME
por el texto que se muestra en la página Endpoints > Services > Quotas para identificar la métrica. - El campo
value_type
debe serINT64
. - El campo
metric_kind
debe serDELTA
.
- Sustituye
Añade un campo
quota
al mismo nivel quemetrics
y añade un campolimits
anidado en la secciónquota
.quota: limits: - name: "YOUR_LIMIT_NAME" metric: "YOUR_METRIC_NAME" unit: "1/min/{project}" values: STANDARD: VALUE_FOR_THE_LIMIT
- Sustituye
YOUR_LIMIT_NAME
por un nombre que describa el límite. - Sustituye
YOUR_METRIC_NAME
por unmetric.name
definido anteriormente. - El campo
unit
debe ser"1/min/{project}"
. Es el identificador del límite por minuto y por proyecto. - El campo
values
debe contenerSTANDARD
. - Sustituye
VALUE_FOR_THE_LIMIT
por un valor entero. Es el número de solicitudes que puede hacer en un minuto una aplicación asociada al proyecto Google Cloud de un consumidor.
- Sustituye
Define otras métricas y límites para cada métrica (este paso es opcional).
Añade una línea
metric_rules
con sangría debajo dequota
, después de la secciónlimits
. En la secciónmetric_rules
, asocia una métrica definida anteriormente a un método de la siguiente manera:metric_rules: - metric_costs: YOUR_METRIC_NAME: YOUR_METRIC_COST selector: [METHODS]
- Sustituye
YOUR_METRIC_NAME
por unmetric.name
definido anteriormente. - Sustituye
YOUR_METRIC_COST
por un número entero. Por cada solicitud, el contador de solicitudes de la métrica se incrementa en el número que especifiques para el coste. En el campo
selector
, puede especificar una de las siguientes opciones:- Para asociar todos los métodos de todas las APIs con
metric_cost
, usaselector: "*"
. - Para asociar todos los métodos de una API con
metric_cost
, usaselector: YOUR_API_NAME.*
. - Para asociar un método específico de una API con el
metric_cost
useselector: YOUR_API_NAME.YOUR_METHOD_NAME
- Para asociar todos los métodos de todas las APIs con
- Sustituye
Guarda el archivo
api_config.yaml
.
Ejemplos de configuración de cuotas
En los tres ejemplos siguientes se muestra cómo configurar cuotas en tu API.
En el siguiente ejemplo se muestra cómo configurar el campo metric
:
metrics: # Define a metric for read requests. - name: "read-requests" display_name: "Read requests" value_type: INT64 metric_kind: DELTA`
En el siguiente ejemplo se muestra cómo configurar los campos quota
y limits
en la sección 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
En el ejemplo siguiente se muestra cómo configurar la línea metrics
después de la sección 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: *
Desplegar el archivo api_config.yaml
y el ESP
Para que la cuota surta efecto, debes hacer lo siguiente:
- Despliega el archivo
api_config.yaml
en Gestión de servicios, lo que actualiza la configuración en Endpoints. Para ver los pasos detallados, consulta Implementar la configuración de Endpoints. - Implementa el ESP. Para ver instrucciones detalladas, consulta Implementar el backend de la API.