Configura cuotas

En esta página, se describe cómo configurar cuotas para tu API. A grandes rasgos, estos son los pasos:

  1. Agrega la información sobre la cuota a tu archivo de configuración de la API de gRPC.
  2. Implementa el archivo de configuración de la API de gRPC.
  3. 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:

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, como read-requests o write-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: un metric_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:

  1. Abre el archivo api_config.yaml del proyecto en un editor de texto.
  2. Agrega el campo metrics en el nivel superior del archivo (sin sangría ni anidado), después del campo apis.

    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 ser INT64.
    • El campo metric_kind debe ser DELTA.
  3. Agrega un campo quota en el mismo nivel que metrics, y un campo limits anidado dentro de la sección quota.

    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 un metric.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 contener STANDARD.
    • 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.
  4. De manera opcional, puedes definir métricas y límites adicionales para cada métrica.

  5. Agrega una línea metric_rules con sangría en de quota, después de la sección limits. En la sección metric_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 un metric.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, usa selector: "*".
      • Para asociar todos los métodos dentro de una API a metric_cost, usa selector: YOUR_API_NAME.*.
      • Para asociar un método específico dentro de una API a metric_cost, usa 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 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:

  1. 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.
  2. Implementa el ESP. Para ver pasos más detallados, consulta Cómo implementar el backend de la API.