Configurar cuotas

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:

  1. Añadir información sobre la cuota en el archivo de configuración de OpenAPI.
  2. Desplegar dicho archivo.
  3. 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:

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, como read-requests o write-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 de metricCosts 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:

  1. Abre el archivo openapi.yaml de tu proyecto en un editor de texto.
  2. 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.
  3. Añade la definición de metrics con sangría en x-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 ser INT64.
    • El campo metricKind debe ser DELTA.
  4. Añade un campo quota al mismo nivel que metrics y añade un campo limits anidado en la sección quota.

    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 un metric.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 contener STANDARD.
    • 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
  5. Define otras métricas y límites para cada métrica (este paso es opcional).

  6. En la sección paths del archivo openapi.yaml, añade la extensión x-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 un metric.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.
  7. 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:

  1. Despliega el archivo openapi.yaml en Gestión de servicios, lo que actualiza la configuración en Endpoints.
  2. 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.