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 la API de gRPC.
  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 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, como read-requests o write-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: asigna metric_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:

  1. Abre el archivo api_config.yaml de tu proyecto en un editor de texto.
  2. Añade el campo metrics en el nivel superior del archivo (sin sangría ni anidación), después del campo apis.`

    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 ser INT64.
    • El campo metric_kind debe ser DELTA.
  3. 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}". Es el identificador del límite por minuto y por proyecto.
    • El campo values debe contener STANDARD.
    • 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.
  4. Define otras métricas y límites para cada métrica (este paso es opcional).

  5. Añade una línea metric_rules con sangría debajo de quota, después de la sección limits. En la sección metric_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 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.
    • En el campo selector, puede especificar una de las siguientes opciones:

      • Para asociar todos los métodos de todas las APIs con metric_cost, usa selector: "*".
      • Para asociar todos los métodos de una API con metric_cost, usa selector: YOUR_API_NAME.*.
      • Para asociar un método específico de una API con el metric_cost use selector: YOUR_API_NAME.YOUR_METHOD_NAME
  6. 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:

  1. 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.
  2. Implementa el ESP. Para ver instrucciones detalladas, consulta Implementar el backend de la API.