Présentation de l'API Cloud Quotas

L'API Cloud Quotas vous permet d'ajuster de manière automatisée des quotas et d'automatiser les ajustements de quota au niveau du projet. L'API Cloud Quotas peut être utilisée pour les tâches suivantes :

Automatiser les ajustements de quota
Vous pouvez utiliser l'API Cloud Quotas pour demander des augmentations de quota lorsque certaines conditions sont remplies. Par exemple, pour éviter les erreurs de dépassement de quota, vous pouvez utiliser l'API pour demander une augmentation de quota de manière automatisée lorsque les ressources Compute Engine atteignent 80 % du quota disponible.
Scaling des configurations de quota entre les projets
L'API Cloud Quotas peut cloner vos configurations de quota d'un projet à un autre. Si vous devez augmenter un ensemble connu de quotas pour chaque nouveau projet Google Cloud, vous pouvez intégrer l'API dans la logique de création de votre projet pour demander automatiquement une augmentation de quota. Toutes les augmentations de quota sont soumises à l'approbation de Google Cloud.
Diffuser les demandes de quotas du client
Si vous êtes un fournisseur SaaS intégré à Google Cloud, vous pouvez recevoir des demandes d'augmentation de quota via un portail destiné aux clients autre que la console Google Cloud. Ces requêtes doivent être transférées à Google Cloud pour traitement. L'API Cloud Quotas peut transférer automatiquement les requêtes des clients.
Activer le contrôle des versions de configuration du client
L'API Cloud Quotas est déclarative. Vous pouvez traiter les configurations de quota comme du code et stocker les configurations dans votre propre système contrôlé par version pour l'historique et le rollback.

Limites

Cloud Quotas présente les limites suivantes :

  • Tous les ajustements d'augmentation de quota sont soumis à l'approbation de Google Cloud.

  • Vous pouvez demander des ajustements d'augmentation ou de diminution du quota pour les quotas au niveau du projet.

  • Vous pouvez demander des ajustements de diminution de quota pour les quotas au niveau du project-, du folder-, et de l'organisation.

Point de terminaison de service

Un point de terminaison de service est une URL de base qui spécifie l'adresse réseau d'un service d'API. Un service peut posséder plusieurs points de terminaison. Le service d'API Cloud Quotas possède le point de terminaison suivant, et tous les URI sont relatifs :

https://cloudquotas.googleapis.com

Rôles requis

Pour obtenir les autorisations nécessaires pour accéder aux ressources cloudquotas_quotaPreferences et cloudquotas_quotaInfos, demandez à votre administrateur de vous accorder le rôle IAM Administrateur Cloud Quotas (cloudquotas.admin) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient les autorisations requises pour accéder aux ressources cloudquotas_quotaPreferences et cloudquotas_quotaInfos. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour accéder aux ressources cloudquotas_quotaPreferences et cloudquotas_quotaInfos :

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

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Modèle de ressource d'API

Le modèle de ressource de l'API Cloud Quotas se compose de deux ressources : QuotaPreference et QuotaInfo.

Préférence de quota

La ressource QuotaPreference représente vos préférences de quota pour une combinaison de dimension particulière. Utilisez cette ressource pour ajuster les quotas dans vos projets, dossiers ou organisations.

Définir une valeur préférée pour une région

L'exemple suivant montre une ressource QuotaPreference dans une méthode CreateQuotaPreference.

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

La valeur preferredValue de 100 indique que le demandeur souhaite que le quota GPUS-PER-GPU-FAMILY-per-project-region soit défini sur cette valeur. Le champ de dimensions indique que la préférence ne s'applique qu'à la région us-central1.

Vérifier la valeur accordée

L'exemple suivant montre une ressource QuotaPreference dans une méthode 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"
}

Ce résultat inclut les valeurs suivantes :

  • PROJECT_NUMBER : identifiant unique généré automatiquement pour votre projet.

La réponse affiche une valeur grantedValue de 100, ce qui signifie que la valeur preferredValue de l'exemple précédent a été approuvée et traitée. Les préférences pour différentes dimensions sont différentes ressources QuotaPreference. Par exemple, QuotaPreference pour le processeur dans les régions us-central1 et us-east1 sont deux ressources distinctes.

Veuillez indiquer une préférence de quota

Les ressources QuotaPreference sont utilisées pour indiquer votre valeur préférée pour un quota particulier. La valeur actuelle d'un quota particulier est basée sur :

  • Les requêtes QuotaPreference que vous avez effectuées.

  • Approbation des demandes d'augmentation de quota par Google Cloud.

  • Modifications apportées aux quotas initiés par Google Cloud

Il n'est pas possible de supprimer un objet QuotaPreference. Toutefois, vous pouvez définir une valeur de quota préférée inférieure à la valeur approuvée par Google Cloud pour ajouter des garde-fous.

Pour en savoir plus sur la ressource QuotaPreference, consultez la documentation de référence de l'API Cloud Quotas.

Pour en savoir plus sur les requêtes QuotaPreference, consultez Mettre en œuvre des cas d'utilisation courants.

Informations sur les quotas

QuotaInfo est une ressource en lecture seule qui fournit des informations sur un quota particulier pour un projet, un dossier ou des organisations spécifique. Elle affiche des informations sur les quotas définis par les services Google Cloud et sur les ajustements de quotas effectués par les clients. La ressource QuotaInfo contient des informations telles que les métadonnées, le type de conteneur et la dimension.

Définir différentes valeurs de quota par région

L'exemple de ressource QuotaInfo suivant montre que le quota de processeurs pour le projet est de 200 pour la région us-central1 et de 100 pour toutes les autres régions.

{
    "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"
            ]
        }
    ]
}

Ce résultat inclut les valeurs suivantes :

  • PROJECT_NUMBER : identifiant unique généré automatiquement pour votre projet.

Définir un quota mondial

L'exemple de ressource QuotaInfo suivant montre un quota de débit avec un intervalle d'actualisation par minute. Les dimensions sont vides, ce qui indique qu'il s'agit d'un quota mondial. Tous les quotas sans dimension de région ou de zone sont mondiaux.

{
    "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"
            ]
        }
    ]
}

Ce résultat inclut les valeurs suivantes :

  • PROJECT_NUMBER : identifiant unique généré automatiquement pour votre projet.

Pour en savoir plus sur la ressource QuotaInfo, consultez la documentation de référence de l'API Cloud Quotas.

Pour en savoir plus sur les requêtes QuotaPreference, consultez Mettre en œuvre des cas d'utilisation courants.

Noms de ressources

Les ressources sont des entités nommées et sont identifiées par des noms de ressources. Les noms de ressources sont utilisés dans toutes les requêtes et réponses, et chaque ressource doit posséder son propre nom de ressource unique. Chaque nom de ressource est encodé par un ensemble de champs.

Ressource de préférence de quota

La convention d'attribution de noms pour une ressource QuotaPreference utilise le modèle suivant :

projects/PROJECT_NUMBER/locations/global/quotaPreferences/QUOTA_PREFERENCE_ID

Vous pouvez définir quotaPreferenceId lors de la création d'une préférence de quota. Sinon, un ID est généré. Il est recommandé d'utiliser un schéma de nommage quotaPreferenceId pour encoder le nom du service, l'ID de quota, l'emplacement et d'autres dimensions. L'élément quotaPreferenceId doit être unique pour le projet, le dossier ou les organisations.

Par exemple quotaPreference, vous pouvez utiliser un modèle pour encoder votre ID de préférence de quota :

SERVICE_LOCATION_DIMENSION1-VALUES-IN-ORDER

L'exemple suivant illustre ce modèle :

compute_us-central1_nvidia-200

Avec un nom de ressource, vous devez utiliser la méthode GET pour récupérer un QuotaPreference. Vous pouvez également appeler la méthode UPDATE avec l'option allow_missing activée pour créer ou mettre à jour un QuotaPreference.

Ressource d'informations sur les quotas

La convention d'attribution de noms pour une ressource QuotaInfo utilise le modèle suivant :

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

Priorité des dimensions

Certains cas d'utilisation de l'API Cloud Quotas présentent des configurations de dimensions complexes. Les quotas peuvent être configurés de manière plus précise que les seules régions et zones. Vous pouvez effectuer cette opération lorsque vous utilisez des dimensions spécifiques au service. Par exemple, gpu_family et network_id sont des dimensions spécifiques au service dans le service Compute Engine. Les dimensions sont définies par chaque service, et chaque service peut avoir un ensemble différent de dimensions spécifiques à un service.

Lorsque vous utilisez des dimensions de zone géographique ou des dimensions spécifiques à un service, la priorité suivante est appliquée :

  1. Une configuration de préférence de quota avec toutes les dimensions d'emplacement et spécifiques au service est prioritaire sur toute autre configuration.

  2. Les configurations qui spécifient des dimensions d'emplacement ont la priorité sur les configurations ne contenant que des dimensions spécifiques au service.

Combiner des dimensions

Dans une configuration de préférence de quota, vous pouvez combiner les dimensions de différentes manières :

  1. La configuration peut contenir à la fois des dimensions d'emplacement et des dimensions spécifiques au service. Il s'agit de l'ordre décroissant.

  2. La configuration ne peut contenir que des dimensions d'emplacement. Cette configuration s'applique à toutes les dimensions spécifiques au service, à l'exception de celles configurées explicitement à l'aide de la méthode 1.

  3. La configuration peut contenir uniquement des dimensions spécifiques au service. Cette configuration s'applique à tous les emplacements, à l'exception de ceux explicitement configurés avec la méthode 1 ou 2.

  4. Si la configuration contient n'importe quelle dimension spécifique au service, elle doit contenir toutes les dimensions spécifiques au service.

  5. Vous pouvez disposer de configurations sans aucune dimension. Ces configurations s'appliquent à tous les emplacements et à toutes les dimensions spécifiques au service, à l'exception de celles explicitement configurées.

Étape suivante