Descripción general de la API de Cloud Quotas

La API de Cloud Quotas te permite ajustar quotas y automatizar los ajustes de cuota a nivel de proyecto. La API de Cloud Quotas se puede usar para lo siguiente:

Automatizar los ajustes de cuota
Puedes usar la API de Cloud Quotas para solicitar aumentos de cuotas cuando se cumplan ciertas condiciones. Por ejemplo, para evitar errores de cuota excedida, puedes usar la API para solicitar de manera programática un aumento de cuota cuando los recursos de Compute Engine alcancen el 80% de la cuota disponible.
Escala las configuraciones de cuotas entre proyectos
La API de Cloud Quotas puede clonar las configuraciones de cuota de un proyecto a otro. Si hay un conjunto conocido de cuotas que debe aumentarse para cada proyecto nuevo de Google Cloud, puedes integrar la API en la lógica de creación de tu proyecto a fin de solicitar un aumento de cuota de forma automática. Todos los aumentos de cuota están sujetos a la revisión y aprobación de Google Cloud.
Entrega solicitudes de cuota del cliente
Si eres un proveedor de SaaS integrado en Google Cloud, es posible que recibas solicitudes de aumento de cuota a través de un portal orientado al cliente que no sea la consola de Google Cloud. Estas solicitudes se deben reenviar a Google Cloud para su procesamiento. La API de Cloud Quotas puede reenviar solicitudes de clientes de forma automática.
Habilita el control de versión de configuración del cliente
La API de Cloud Quotas es una configuración declarativa. Puedes tratar las configuraciones de cuota como código y almacenarlas en tu propio sistema controlado por versión para el historial y la reversión.

Limitaciones

La API de Cloud Quotas tiene las siguientes limitaciones:

  • La API no admite Google Cloud CLI.

  • La API no admite solicitudes de aumento de cuota para cuotas a nivel de carpeta y de organización.

Extremo de servicio

Un extremo de servicio es una URL base que especifica la dirección de la red de un servicio de API. Un servicio puede tener varios extremos. El servicio de la API de Cloud Quotas tiene el siguiente extremo, y todos los URI están relacionados con él:

https://cloudquotas.googleapis.com

Funciones obligatorias

Para obtener los permisos que necesitas para acceder a los recursos cloudquotas_quotaPreferences y cloudquotas_quotaInfos, pídele a tu administrador que te otorgue el rol de IAM de Administrador de Cloud Quotas (cloudquotas.admin) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

Este rol predefinido contiene los permisos necesarios para acceder a los recursos cloudquotas_quotaPreferences y cloudquotas_quotaInfos. Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:

Permisos necesarios

Se requieren los siguientes permisos para acceder a los recursos cloudquotas_quotaPreferences y cloudquotas_quotaInfos:

  • cloudquotas.quotas.update
  • cloudquotas.quotas.get
  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

También puedes obtener estos permisos con funciones personalizadas o con otras funciones predefinidas

Modelo de recursos de la API

El modelo de recursos de la API de Cloud Quotas consta de dos recursos: QuotaPreference y QuotaInfo.

Preferencia de cuota

El recurso QuotaPreference representa tu preferencia de cuota para una combinación de dimensiones particular. Usa este recurso para ajustar las cuotas en tus proyectos, organizaciones o carpetas.

Establece un valor preferido para una región

En el siguiente ejemplo, se muestra un recurso QuotaPreference en un método CreateQuotaPreference.

{
    "service": "compute.googleapis.com",
    "quotaId": "GPUS-PER-GPU-FAMILY-per-project-region",
    "quotaConfig": {
        "preferredValue": 100
    },
    "dimensions": {
        "region": "us-central1"
    }
}

El preferredValue de 100 indica que el solicitante desea que la cuota GPUS-PER-GPU-FAMILY-per-project-region se establezca en ese valor. En el campo de dimensiones, se indica que la preferencia solo se aplica a la región us-central1.

Verifica el valor otorgado

En el siguiente ejemplo, se muestra un recurso QuotaPreference en un método GetQuotaPreference.

{
    "name": "projects/PROJECT_NUMBER/locations/global/quotaPreferences/compute_googleapis_com-gpus-us-central1",
    "service": "compute.googleapis.com",
    "quotaId": "GPUS-PER-GPU-FAMILY-per-project-region",
    "quotaConfig": {
        "preferredValue": 100,
        "grantedValue": 100,
        "traceId": "123acd-345df23",
        "requestOrigin": "ORIGIN_UNSPECIFIED"
    },
    "dimensions": {
        "region": "us-central1"
    },
    "createTime": "2023-01-15T01:30:15.01Z",
    "updateTime": "2023-01-16T02:35:16.01Z"
}

En esta salida, se incluyen los siguientes valores:

  • PROJECT_NUMBER: Un identificador único generado de forma automática para tu proyecto.

La respuesta muestra un grantedValue de 100, lo que significa que la preferredValue del ejemplo anterior se aprobó y se completó. Las preferencias para diferentes dimensiones son recursos QuotaPreference diferentes. Por ejemplo, QuotaPreference para la CPU en las regiones us-central1 y us-east1 son dos recursos distintos.

La preferencia de cuota es obligatoria

Los recursos QuotaPreference se usan para indicar tu valor preferido para una cuota en particular. El valor actual de una cuota en particular se basa en lo siguiente:

  • QuotaPreference solicitudes que realizaste.

  • Solicitudes de aumento de cuota aprobadas por Google Cloud.

  • Cambios en las cuotas que inició Google Cloud.

No se admite la capacidad de borrar una QuotaPreference. Sin embargo, puedes establecer un valor de cuota preferido más bajo que el valor aprobado de Google Cloud para agregar más barreras de seguridad.

Para obtener más información sobre el recurso QuotaPreference, consulta la referencia de la API de Cloud Quotas.

Para obtener más información sobre las consultas QuotaPreference, consulta Implementa casos de uso comunes.

Información de la cuota

QuotaInfo es un recurso de solo lectura que proporciona información sobre una cuota en particular para una carpeta, organizaciones o proyectos determinados. Muestra información de las cuotas definidas por los servicios de Google Cloud y cualquier ajuste de cuota completado que inicien los clientes. El recurso QuotaInfo contiene información como los metadatos, el tipo de contenedor y la dimensión.

Configura diferentes valores de cuota por región

En el siguiente ejemplo de recurso QuotaInfo, se muestra que la cuota de CPU del proyecto es de 200 para la región us-central1 y 100 para todas las demás regiones.

{
    "name": "projects/PROJECT_NUMBER/locations/global/services/compute.googleapis.com/quotaInfos/CPUS-per-project-region",
    "quotaId": "CPUS-per-project-region",
    "metric": "compute.googleapis.com/cpus",
    "containerType": "PROJECT",
    "dimensions": [
        "region"
    ],
    "isPrecise": true,
    "quotaDisplayName": "CPUs per project per region",
    "metricDisplayName": "CPUs",
    "dimensionsInfo": [
        {
            "dimensions": {
                "region": "us-central1"
            },
            "details": {
                "quotaValue": 200,
                "resetValue": 200
            },
            "applicableLocations": [
                "us-central1",
            ]
        },
        {
            "details": {
                "quotaValue": 100,
                "resetValue": 100
            },
            "applicableLocations": [
                "us-central2",
                "us-west1",
                "us-east1"
            ]
        }
    ]
}

En esta salida, se incluyen los siguientes valores:

  • PROJECT_NUMBER: Un identificador único generado de forma automática para tu proyecto.

Configura una cuota global

En el siguiente ejemplo de recurso QuotaInfo, se muestra una cuota de frecuencia con un intervalo de actualización por minuto. Las dimensiones están en blanco, lo que indica que esta es una cuota global. Todas las cuotas sin una dimensión de región o zona son globales.

{
    "name": "projects/PROJECT_NUMBER/locations/global/services/compute.googleapis.com/quotaInfos/ReadRequestsPerMinutePerProject",
    "quotaId": "ReadRequestsPerMinutePerProject",
    "metric": "compute.googleapis.com/read_requests",
    "refreshInterval": "minute",
    "containerType": "PROJECT",
    "dimensions": [],
    "isPrecise": false,
    "quotaDisplayName": "Read Requests per Minute",
    "metricDisplayName": "Read Requests",
    "dimensionsInfo": [
        {
            "details": {
                "quotaValue": 100,
                "resetValue": 200
            },
            "applicableLocations": [
                "global"
            ]
        }
    ]
}

En esta salida, se incluyen los siguientes valores:

  • PROJECT_NUMBER: Un identificador único generado de forma automática para tu proyecto.

Para obtener más detalles sobre el recurso QuotaInfo, consulta la referencia de la API de Cloud Quotas.

Para obtener más detalles sobre las consultas QuotaPreference, consulta Implementa casos de uso comunes.

Nombres de recursos

Los recursos son entidades con nombre y se identifican con nombres de recursos. Los nombres de recursos se usan en todas las solicitudes y respuestas, y cada recurso debe tener su propio nombre único. Cada nombre de recurso está codificado por un conjunto de campos.

Recurso de preferencia de cuota

La convención de nombres para un recurso QuotaPreference usa el siguiente patrón:

projects/PROJECT_NUMBER/locations/global/quotaPreferences/QUOTA_PREFERENCE_ID

Puedes configurar quotaPreferenceId cuando creas una preferencia de cuota; de lo contrario, se genera un ID. Se recomienda que un esquema de nombres quotaPreferenceId codifique el nombre del servicio, el ID de cuota, la ubicación y otras dimensiones. El quotaPreferenceId debe ser único para el proyecto, la carpeta o las organizaciones.

Como quotaPreference de ejemplo Un patrón para codificar tu ID de preferencia de cuota es el siguiente:

SERVICE_LOCATION_DIMENSION1-VALUES-IN-ORDER

En el siguiente ejemplo, se enumeran las cuentas de servicio para el proyecto especificado.

compute_us-central1_nvidia-200

Con un nombre de recurso, debes usar el método GET para recuperar un QuotaPreference. También puedes llamar al método UPDATE con la opción allow_missing habilitada para crear o actualizar un QuotaPreference.

Recurso de información de la cuota

La convención de nombres para un recurso QuotaInfo usa el siguiente patrón:

projects/PROJECT_NUMBER/locations/global/services/SERVICE_NAME/quotaInfos/QUOTA_ID

Prioridad de dimensión

Algunos casos de uso de la API de Cloud Quotas tienen parámetros de configuración de dimensiones complejas. Las cuotas se pueden configurar a un nivel más detallado que solo las regiones y zonas. Puedes lograr este nivel de detalle cuando usas dimensiones específicas del servicio. Por ejemplo, gpu_family y network_id son dimensiones específicas del servicio en el servicio de Compute Engine. Cada servicio individual define las dimensiones, y cada servicio puede tener un conjunto diferente de dimensiones específicas del servicio.

Cuando se trabaja con dimensiones de ubicación o específicas del servicio, se aplica la siguiente prioridad:

  1. Una configuración de preferencia de cuota con todas las dimensiones específicas de la ubicación y del servicio especificadas tiene prioridad sobre cualquier otra configuración.

  2. Las configuraciones que especifican dimensiones de ubicación solo tienen prioridad sobre aquellas que contienen solo dimensiones específicas del servicio.

Combina dimensiones

En una configuración de preferencia de cuota, puedes combinar dimensiones de las siguientes maneras:

  1. La configuración puede contener ambas dimensiones de ubicación y dimensiones específicas del servicio. Este es el orden más alto en prioridad.

  2. La configuración solo puede contener dimensiones de ubicación. Esta configuración se aplica a todas las dimensiones específicas del servicio, excepto las que se configuran de forma explícita con el método 1.

  3. La configuración solo puede contener dimensiones específicas del servicio. Esta configuración se aplica a todas las ubicaciones, excepto las configuradas de manera explícita con los métodos 1 o 2.

  4. Si la configuración contiene cualquier dimensión específica del servicio, debe contener todas las dimensiones específicas del servicio.

  5. Puedes tener configuraciones sin ninguna dimensión. Estas opciones de configuración se aplican a todas las ubicaciones y a todas las dimensiones específicas del servicio, excepto las que se configuran de forma explícita.

Próximos pasos