Administra cuotas de servicio

En esta página se describe cómo visualizar todas las métricas y los límites de cuota de un proyecto de Google Cloud para un servicio específico y cómo limitar el uso de la cuota para ese servicio mediante una anulación de cuota. Puedes usar Service Usage para administrar la cuota de tus proyectos para cualquier servicio, incluidos los servicios públicos de Google Cloud y los servicios privados creados con Cloud Endpoints. Para obtener más información acerca de las diferencias entre las API y los servicios públicos y privados, consulta Servicios públicos y privados.

Asegúrate de familiarizarte con el modelo de cuota de servicio para comprender mejor la terminología que se emplea en este instructivo.

Para la mayoría de los casos prácticos operativos, la forma más sencilla de administrar las cuotas es usar Google Cloud Console. Si quieres programar soluciones basadas en la API de Service Usage, te recomendamos que uses una de nuestras bibliotecas cliente. Para experimentar con la API, puedes seguir las instrucciones que aparecen en esta guía y usar el comando curl para probar la API sin configurar un entorno completo de desarrollo de aplicaciones.

Antes de comenzar

Para administrar las cuotas de servicio, necesitas lo siguiente:

Para los fines de este instructivo, usaremos una variable de entorno PROJECT_NUMBER configurada con un número de proyecto que posees y el servicio serviceusage.googleapis.com como el servicio de interés.

Para encontrar rápidamente el número de uno de tus proyectos según el PROJECT_ID, usa el siguiente comando:

PROJECT_NUMBER=`gcloud projects list --filter="${PROJECT_ID}" --format="value(PROJECT_NUMBER)"`

Muestra la cuota de servicio

Para ver todas las métricas y los límites de cuota que se aplican a un consumidor específico de un servicio, usa el siguiente comando:

gcurl https://serviceusage.googleapis.com/v1beta1/projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics

La llamada responde con una lista de métricas definidas por el servicio, cada una con la lista de límites de esas métricas que se aplican a este consumidor, los valores de esos límites y cualquier anulación. Esta es una respuesta de ejemplo:

{
  "metrics": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests",
      "displayName": "Default requests",
      "consumerQuotaLimits": [
        {
          "name": "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject",
          "unit": "1/min/{project}",
          "metric": "serviceusage.googleapis.com/default_requests",
          "quotaBuckets": [
            {
              "effectiveLimit": "240",
              "defaultLimit": "240"
            }
          ]
        }
      ],
      "metric": "serviceusage.googleapis.com/default_requests"
    },
    {
      "name": "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fmutate_requests",
      "displayName": "Mutate requests",
      "consumerQuotaLimits": [
        {
          "name": "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fmutate_requests/limits/%2Fmin%2Fproject",
          "unit": "1/min/{project}",
          "metric": "serviceusage.googleapis.com/mutate_requests",
          "quotaBuckets": [
            {
              "effectiveLimit": "120",
              "defaultLimit": "120"
            }
          ]
        }
      ],
      "metric": "serviceusage.googleapis.com/mutate_requests"
    }
  ]
}

Cada métrica de la respuesta tiene un campo name. Para inspeccionar la configuración de cuota solo para esa métrica en lugar de para todas las métricas, usa el name de la URL. En este instructivo, el nombre del recurso de métrica de cuota se almacena en la variable de entorno METRIC_RESOURCE_NAME:

METRIC_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests"
gcurl https://serviceusage.googleapis.com/v1beta1/${METRIC_RESOURCE_NAME}

Del mismo modo, cada límite de una métrica tiene un campo name. Para inspeccionar la configuración de cuota solo para ese límite de métrica en lugar de para todos los límites de métrica o todas las métricas, usa el name de la URL. En este instructivo, el nombre del recurso de límite de cuota se almacena en la variable de entorno LIMIT_RESOURCE_NAME:

LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject"
gcurl https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}

Crea una anulación de cuota del consumidor

El propietario de un proyecto puede aplicar una anulación del consumidor a un límite de cuota específico de ese proyecto para reducir la cantidad total de cuota que puede cobrar el consumidor según ese límite.

Ten en cuenta que una anulación del consumidor no puede aumentar la cuota disponible más allá de lo que permiten el servicio predeterminado y cualquier anulación existente de otras partes (como el propietario del servicio o el administrador de cuotas de una organización). Para aumentar la cuota disponible, usa la opción Editar cuotas de la página principal de cuotas o pídele un aumento al administrador de la organización.

Para identificar un límite anulable, primero usa uno de los métodos anteriores para encontrar el límite de la cuota de interés y, luego, usa el campo de nombre para crear una nueva anulación del consumidor en la colección de anulaciones del límite. El siguiente ejemplo corresponde a un límite de cuota específico:

LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject"
gcurl https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides -d '{"overrideValue": "220"}'

Si se realiza correctamente la llamada, se mostrará un identificador de operación, que representa el trabajo en curso en el servidor, a medida que se propaga el cambio de cuota a los sistemas de backend:

{
  "name": "operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
}

Para verificar el progreso de la operación, basta con usar su name:

OPERATION_NAME="operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
gcurl https://serviceusage.googleapis.com/v1/${OPERATION_NAME}

Si se realiza correctamente la operación, el mensaje de respuesta incluye done: true y contiene el recurso de anulación creado recientemente. Si falla la operación, el mensaje de respuesta incluye done: true, pero contiene los detalles del error en lugar del recurso.

También puede verificar si se aplicó un cambio mediante la repetición de la llamada “get” original en el límite específico. Ahora, el límite debe tener un campo consumerOverride adicional.

Crea anulaciones de cuotas regionales o zonales

Algunos límites de cuota se aplican por región o por zona, lo que se indica con la presencia de {region} o {zone} en el campo unit del límite. Por ejemplo, un límite con la unidad "1/{project}/{region}" se aplica por región. Cuando se aplica una anulación al límite, se cambia la cuota base en cada región o zona. Para cambiar la cuota solo de una región o zona específica, agrega una dimensión de cuota mediante el campo dimensions cuando crees la anulación. Por ejemplo, crea una anulación regional en un límite de cuota regional de Cloud ML de la siguiente manera:

REGIONAL_LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/ml.googleapis.com/consumerQuotaMetrics/ml.googleapis.com%2Foptimizer_management_requests"
gcurl https://serviceusage.googleapis.com/v1beta1/${REGIONAL_LIMIT_RESOURCE_NAME}/consumerOverrides -d '{"overrideValue": "550", "dimensions": {"region": "asia-south1"} }'

Actualiza una anulación de cuota del consumidor

El propietario de un proyecto también puede cambiar el valor de una anulación del consumidor existente en el proyecto.

Por ejemplo, supongamos que una llamada de creación anterior mostró una anulación con un campo name como este:

name: "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject/consumerOverrides/b14c5591ff01"

Luego, usa ese nombre para identificar la anulación que se actualizará de esta forma:

OVERRIDE_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject/consumerOverrides/b14c5591ff01"
gcurl https://serviceusage.googleapis.com/v1beta1/${OVERRIDE_RESOURCE_NAME} -X PATCH -d '{"overrideValue": "230"}'

Si se realiza correctamente la llamada, se mostrará un identificador de operación, que representa el trabajo en curso en el servidor, a medida que se propaga el cambio de cuota a los sistemas de backend:

{
  "name": "operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
}

Para verificar el progreso de la operación, basta con usar su name:

OPERATION_NAME="operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
gcurl https://serviceusage.googleapis.com/v1/${OPERATION_NAME}

Si se realiza correctamente la operación, el mensaje de respuesta incluye done: true y contiene el recurso de anulación actualizado. Si falla la operación, el mensaje de respuesta incluye done: true, pero contiene los detalles del error en lugar del recurso actualizado.

Borra una anulación de cuota del consumidor

El propietario de un proyecto también puede quitar una anulación del consumidor del proyecto.

Por ejemplo, supongamos que una llamada de creación anterior mostró una anulación con un campo name como este:

name: "projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject/consumerOverrides/b14c5591ff01"

Para borrar la anulación, ejecuta la siguiente secuencia:

OVERRIDE_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject/consumerOverrides/b14c5591ff01"
gcurl https://serviceusage.googleapis.com/v1beta1/${OVERRIDE_RESOURCE_NAME} -X DELETE

Realiza cambios significativos en la cuota de manera forzosa

Si un cambio de anulación de cuota provoca que la cuota aplicada disminuya en más del 10%, se rechaza la llamada como medida de seguridad para evitar reducir la cuota demasiado rápido por accidente. Para saltar esta restricción, usa la marca force. Por ejemplo, esta es una llamada de creación que incluye la marca de aplicación forzosa:

LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/serviceusage.googleapis.com/consumerQuotaMetrics/serviceusage.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject"
gcurl https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides?force=true -d '{"overrideValue": "40"}'