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 OpenAPI.
- 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:
- Configurar Cloud Endpoints
- 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 a un documento de OpenAPI
En el siguiente procedimiento se describe cómo añadir las extensiones necesarias a su documento de OpenAPI para configurar las cuotas. Para simplificar, en esta página se hace referencia al documento de OpenAPI como el archivo openapi.yaml
y se proporcionan las extensiones de OpenAPI solo en formato YAML.
Añade las tres secciones siguientes al archivo openapi.yaml
:
x-google-management.metrics
: métrica con nombre que cuenta las solicitudes a tu API. Usted proporciona un nombre que describe el contador. El nombre puede ser una categoría, comoread-requests
owrite-requests
. Si va a definir una cuota para un método específico, puede incluir el nombre del método, por ejemplo,echo-api/echo_requests
x-google-management.quota.limits
: representa un único límite aplicable en una métrica con nombre. Aquí es donde se configura el número de solicitudes permitidas de una métrica que hayas definido. Actualmente, solo se admiten límites por minuto y por proyecto.x-google-quota.metricCosts
: asigna los métodos demetricCosts
a las 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 asocia un método a una métrica, siempre debe especificar un coste para la solicitud. Puede configurar el coste de cada método de forma independiente. De esta forma, los distintos métodos pueden consumir datos a diferentes velocidades de la misma métrica con nombre. 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
openapi.yaml
de tu proyecto en un editor de texto. - Si aún no lo has hecho, añade la extensión
x-google-management
a la raíz del archivo (sin sangría ni anidación) antes de la sección que define las rutas. Añade la definición de
metrics
con sangría enx-google-management
.x-google-management: metrics: - name: "YOUR_METRIC_NAME" displayName: "YOUR_METRIC-DISPLAY_NAME" valueType: INT64 metricKind: 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
valueType
debe serINT64
. - El campo
metricKind
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}"
. Este es el identificador del límite por minuto y proyecto. - El campo
values
debe contenerSTANDARD
. - Sustituye
VALUE_FOR_THE_LIMIT
por un valor entero. Es el número de solicitudes que puede enviar en un minuto una aplicación asociada al proyecto de un consumidor. Google Cloud
- Sustituye
Define otras métricas y límites para cada métrica (este paso es opcional).
En la sección
paths
del archivoopenapi.yaml
, añade la extensiónx-google-quota
con sangría debajo de cada método al que quieras aplicar una cuota.x-google-quota: metricCosts: YOUR_METRIC_NAME: YOUR_METRIC_COST
- 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.
- Sustituye
Guarda el archivo
openapi.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
:
x-google-management: metrics: # Define a metric for read requests. - name: "read-requests" displayName: "Read requests" valueType: INT64 metricKind: DELTA
En el siguiente ejemplo se muestra cómo configurar los campos quota
y limits
en la sección quota
:
x-google-management: metrics: # Define a metric for read requests. - name: "read-requests" displayName: "Read requests" valueType: INT64 metricKind: 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 siguiente ejemplo se muestra cómo configurar la extensión x-google-quota
en la sección paths
:
x-google-management: metrics: # Define a metric for read requests. - name: "read-requests" displayName: "Read requests" valueType: INT64 metricKind: DELTA quota: limits: # Define the limit or the read-requests metric. - name: "read-limit" metric: "read-requests" unit: "1/min/{project}" values: STANDARD: 1000 paths: "/echo": post: description: "Echo back a given message." operationId: "echo" produces: - "application/json" responses: 200: description: "Echo" schema: $ref: "#/definitions/echoMessage" parameters: - description: "Message to echo" in: body name: message required: true schema: $ref: "#/definitions/echoMessage" x-google-quota: metricCosts: "read-requests": 1 security: - api_key: []
Consulta Extensiones de OpenAPI para ver más ejemplos y descripciones detalladas de las extensiones x-google-management
y x-google-quota
.
Desplegar el archivo openapi.yaml
y el ESP
Para que la cuota surta efecto, debes hacer lo siguiente:
- Despliega el archivo
openapi.yaml
en Gestión de servicios, lo que actualiza la configuración en Endpoints. - Implementa el ESP. Los pasos para desplegar el ESP varían en función del backend en el que se haya desplegado tu API.
Para ver los pasos detallados, consulta Implementar el backend de la API.