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 Endpoints identifique el proyecto Google Cloud con el que está asociada la aplicación que realiza la llamada. Consulta Cómo compartir APIs 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-requestsowrite-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_ruleasigna 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.yamldel proyecto en un editor de texto. Agrega el campo
metricsen 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_NAMEpor un nombre que describa el recuento de solicitudes a la API. - Reemplaza
YOUR_METRIC_DISPLAY_NAMEpor el texto que se muestra en la página Endpoints > Servicios > Cuotas para identificar la métrica. - El campo
value_typedebe serINT64. - El campo
metric_kinddebe serDELTA.
- Reemplaza
Agrega un campo
quotaen el mismo nivel quemetrics, y un campolimitsanidado 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_NAMEpor un nombre que describa el límite. - Reemplaza
YOUR_METRIC_NAMEpor unmetric.nameque ya esté definido. - El campo
unitdebe ser"1/min/{project}". Este es el identificador del límite por minuto, por proyecto. - El campo
valuesdebe contenerSTANDARD. - Reemplaza
VALUE_FOR_THE_LIMITpor un número entero. Es la cantidad de solicitudes que una aplicación asociada a un proyecto Google Cloud de un 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_rulescon 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_NAMEpor unmetric.nameque ya esté definido. - Reemplaza
YOUR_METRIC_COSTpor 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.yamlen 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.