En esta página, se describe cómo configurar cuotas para tu API. A grandes rasgos, estos son los pasos:
- Agrega la información sobre la cuota a tu archivo de configuración de la API de gRPC.
- Implementa el archivo de configuración de la API de gRPC.
- Implementa el proxy de servicio extensible (ESP).
Para obtener una descripción general de la funcionalidad que proporcionan las cuotas, consulta Acerca de las cuotas.
Requisitos previos
Como punto de partida, en esta página se supone que ya:
- Configuraste Cloud Endpoints.
- Implementaste la configuración de Endpoints.
- Implementaste el backend de la API.
- Configuraste tu API para que use una clave de API. Esto es necesario para que, en Endpoints, se identifique el proyecto de Google Cloud al que está asociada la aplicación desde la que se realiza la llamada. Consulta Cómo compartir API protegidas por claves de API para obtener más información.
Agrega una cuota al archivo de configuración de la API de gRPC
En el procedimiento siguiente, se describe cómo agregar la configuración necesaria para tu archivo de configuración de la API de gRPC a fin de configurar cuotas. En resumen, esta página hace referencia al archivo de configuración de la API de gRPC como el archivo api_config.yaml
.
Agrega estas tres secciones al archivo api_config.yaml
:
metrics
, una métrica con nombre que cuenta las solicitudes enviadas a tu API. Debes proporcionar un nombre que describa el recuento. El nombre puede ser una categoría, comoread-requests
owrite-requests
. Como alternativa, si defines una cuota para un método en particular, es posible que necesites incluir el nombre del método, por ejemplo,echo-api/echo_requests
.quota.limits
: representa un único límite de aplicación forzosa de una métrica con nombre. Aquí es donde debes configurar la cantidad permitida de solicitudes para una métrica que definiste. Ahora mismo, solo son compatibles los límites por proyecto y por minuto.quota.metric_rules
: unmetric_rule
asigna los métodos a las métricas (varios a varios). Una solicitud a un método asigna un contador por cada una de las métricas mapeadas. Cuando asocias un método a una métrica, siempre debes especificar un costo para la solicitud. Puedes configurar el costo de cada método de forma independiente. Esto permite que los diferentes métodos consuman de la misma métrica a distintas tarifas. Si no tienes un requisito complejo de cuotas, puedes configurar el costo de cada métrica como 1.
Para configurar cuotas en la API, sigue estos pasos:
- Abre el archivo
api_config.yaml
del proyecto en un editor de texto. Agrega el campo
metrics
en el nivel superior del archivo (sin sangría ni anidado), después del campoapis
.metrics: - name: "YOUR_METRIC_NAME" display_name: "YOUR_METRIC_DISPLAY_NAME" value_type: INT64 metric_kind: DELTA`
- Reemplaza
YOUR_METRIC_NAME
por un nombre que describa el recuento de solicitudes a la API. - Reemplaza
YOUR_METRIC_DISPLAY_NAME
por el texto que se muestra en la página Endpoints > Servicios > Cuotas para identificar la métrica. - El campo
value_type
debe serINT64
. - El campo
metric_kind
debe serDELTA
.
- Reemplaza
Agrega un campo
quota
en el mismo nivel quemetrics
, y un campolimits
anidado dentro de la secciónquota
.quota: limits: - name: "YOUR_LIMIT_NAME" metric: "YOUR_METRIC_NAME" unit: "1/min/{project}" values: STANDARD: VALUE_FOR_THE_LIMIT
- Reemplaza
YOUR_LIMIT_NAME
por un nombre que describa el límite. - Reemplaza
YOUR_METRIC_NAME
por unmetric.name
que ya esté definido. - El campo
unit
debe ser"1/min/{project}"
. Este es el identificador del límite por minuto, por proyecto. - El campo
values
debe contenerSTANDARD
. - Reemplaza
VALUE_FOR_THE_LIMIT
por un número entero. Se refiere a la cantidad de solicitudes que una aplicación asociada a un proyecto de Google Cloud del consumidor puede realizar en un minuto.
- Reemplaza
De manera opcional, puedes definir métricas y límites adicionales para cada métrica.
Agrega una línea
metric_rules
con sangría en dequota
, después de la secciónlimits
. En la secciónmetric_rules
, asocia una métrica ya definida a un método de la siguiente manera:metric_rules: - metric_costs: YOUR_METRIC_NAME: YOUR_METRIC_COST selector: [METHODS]
- Reemplaza
YOUR_METRIC_NAME
por unmetric.name
que ya esté definido. - Reemplaza
YOUR_METRIC_COST
por un número entero. En cada solicitud, el contador de solicitudes de la métrica aumenta según la cantidad que especifiques para el costo. Para el campo
selector
, puedes especificar uno de los siguientes:- Para asociar todos los métodos en todas las API a
metric_cost
, usaselector: "*"
. - Para asociar todos los métodos dentro de una API a
metric_cost
, usaselector: YOUR_API_NAME.*
. - Para asociar un método específico dentro de una API a
metric_cost
, usaselector: YOUR_API_NAME.YOUR_METHOD_NAME
- Para asociar todos los métodos en todas las API a
- Reemplaza
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 ejemplo siguiente, 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 ejemplo siguiente, se muestra cómo configurar los campos quota
y limits
dentro de 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: *
Implementa el archivo api_config.yaml
y el ESP
Para que la cuota se aplique, debes hacer lo siguiente:
- Implementar el archivo
api_config.yaml
en Service Management, que actualiza la configuración de Endpoints Para ver pasos más detallados, consulta la sección sobre la implementación de la configuración de Endpoints. - Implementa el ESP. Para ver pasos más detallados, consulta Cómo implementar el backend de la API.