Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Gestione della quota di servizio

Questa pagina descrive come visualizzare tutte le metriche e i limiti di quota di un progetto Google Cloud per un servizio specifico e come limitare l'utilizzo della quota per quel servizio utilizzando un override della quota. Puoi utilizzare l'utilizzo dei servizi per gestire la quota per i tuoi progetti di qualsiasi servizio, inclusi i servizi Google Cloud pubblici e i servizi privati creati utilizzando Cloud Endpoints. Per ulteriori informazioni sulle differenze tra le API e i servizi pubblici e privati, consulta Servizi pubblici e privati.

Nella maggior parte dei casi d'uso operativi, il modo più semplice per gestire la quota è utilizzare Google Cloud Console. Se devi programmare in base all'API Service Usage, ti consigliamo di utilizzare una delle nostre librerie client fornite. Per sperimentare l'API, puoi seguire le istruzioni riportate in questa guida e utilizzare il comando gcurl per testare l'API senza configurare un ambiente di sviluppo completo delle applicazioni.

Se utilizzi Terraform, consulta la sezione Gestire le risorse di utilizzo del servizio con Terraform.

Prima di iniziare

Per utilizzare gli esempi in questa pagina, completa tutti i passaggi elencati nella guida Per iniziare. Questi passaggi includono la definizione di gcurl, ovvero un alias autenticato per il comando curl standard, e la definizione della variabile di ambiente PROJECT_NUMBER.

Innanzitutto, acquisisci familiarità con il modello di quota di servizio per comprendere meglio la terminologia utilizzata in questo tutorial.

Visualizzazione della quota di servizio

Per visualizzare tutte le metriche e i limiti di quota applicati a un consumatore specifico in un servizio, utilizza il comando seguente:

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

La chiamata risponde con un elenco di metriche definite dal servizio, ciascuna con l'elenco dei limiti di tali metriche che si applicano a questo consumatore, i valori per tali limiti ed eventuali override. Ecco una risposta di esempio parziale:


{
  "metrics": [
    ...
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus",
      "displayName": "CPUs",
      "consumerQuotaLimits": [
        {
          "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fzone",
          "unit": "1/{project}/{zone}",
          "isPrecise": true,
          "metric": "compute.googleapis.com/cpus",
          "quotaBuckets": [
            {
              "effectiveLimit": "-1",
              "defaultLimit": "-1"
            }
          ]
        },
        {
          "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion",
          "unit": "1/{project}/{region}",
          "isPrecise": true,
          "metric": "compute.googleapis.com/cpus",
          "quotaBuckets": [
            {
              "effectiveLimit": "24",
              "defaultLimit": "24"
            },
            {
              "effectiveLimit": "72",
              "defaultLimit": "72",
              "dimensions": {
                "region": "asia-northeast1"
              }
            },

            ...

            {
              "effectiveLimit": "72",
              "defaultLimit": "72",
              "dimensions": {
                "region": "australia-southeast1"
              }
            }
          ]
        }
      ],
      "metric": "compute.googleapis.com/cpus",
      "unit": "1"
    },
    ...
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways",
      "displayName": "External VPN gateways",
      "consumerQuotaLimits": [
        {
          "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject",
          "unit": "1/{project}",
          "isPrecise": true,
          "metric": "compute.googleapis.com/external_vpn_gateways",
          "quotaBuckets": [
            {
              "effectiveLimit": "15",
              "defaultLimit": "15"
            }
          ]
        }
      ],
      "metric": "compute.googleapis.com/external_vpn_gateways",
      "unit": "1"
    },
    ...

Ogni metrica nella risposta ha un campo name; per controllare le impostazioni di quota solo per quella metrica e non per tutte le metriche, utilizza la relativa name nell'URL. Ai fini di questo tutorial, la variabile di ambiente METRIC_RESOURCE_NAME archivia il nome della risorsa della metrica relativa alla quota:

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

Poiché viene dato un nome specifico per la metrica, la chiamata restituisce solo le informazioni relative alla metrica in questione:

{
  "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways",
  "displayName": "External VPN gateways",
  "consumerQuotaLimits": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject",
      "unit": "1/{project}",
      "isPrecise": true,
      "metric": "compute.googleapis.com/external_vpn_gateways",
      "quotaBuckets": [
        {
          "effectiveLimit": "15",
          "defaultLimit": "15"
        }
      ]
    }
  ],
  "metric": "compute.googleapis.com/external_vpn_gateways",
  "unit": "1"
}

Analogamente, ogni limite all'interno di una metrica ha un campo name; per controllare le impostazioni delle quote solo per quel limite per quella metrica, anziché per tutti i limiti in una metrica o per tutte le metriche, utilizza la relativa name nell'URL. Ai fini di questo tutorial, la variabile di ambiente LIMIT_RESOURCE_NAME archivia il nome della risorsa del limite di quota:

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

Quando viene assegnato un limite specifico, la chiamata restituisce solo le informazioni relative a quel limite:

{
  "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject",
  "unit": "1/{project}",
  "isPrecise": true,
  "metric": "compute.googleapis.com/external_vpn_gateways",
  "quotaBuckets": [
    {
      "effectiveLimit": "15",
      "defaultLimit": "15"
    }
  ]
}

Creazione di una sostituzione della quota consumer

Il proprietario di un progetto può applicare un override del consumatore a un limite di quota specifico su quel progetto per ridurre l'importo totale della quota che il consumatore può addebitare a fronte di tale limite.

Tieni presente che la sostituzione di un consumer non può aumentare la quota disponibile oltre quanto consentito per impostazione predefinita dal servizio e le sostituzioni esistenti di altre parti (ad esempio il proprietario del servizio o l'amministratore di una quota dell'organizzazione). Per aumentare la quota disponibile, utilizza l'opzione Modifica quote nella pagina principale della quota o chiedi all'amministratore dell'organizzazione un aumento della quota.

Per identificare un limite da sostituire, utilizza prima uno dei metodi precedenti per individuare il limite di quota di interesse. Quindi, utilizza il campo del nome del limite di quota per creare un nuovo override del consumatore per tale limite. L'esempio seguente riguarda il limite per progetto della metrica "quota VPN esterna" "Gateway VPN esterni" del servizio Compute Engine:

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

Quando la chiamata ha esito positivo, restituisce un identificatore dell'operazione, che rappresenta il lavoro in corso sul server, mentre la modifica della quota si propaga ai sistemi di backend:

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

Per verificare l'avanzamento dell'operazione, è sufficiente usare il suo name:

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

Se l'operazione ha esito positivo, il messaggio di risposta include done: true e contiene la risorsa di override appena creata. Se l'operazione non riesce, il messaggio di risposta include done: true, ma contiene i dettagli dell'errore anziché la risorsa.

Per verificare che l'override sia stato creato, elenca tutte le sostituzioni del consumatore per il limite:

gcurl "https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides"

L'override appena creato dovrebbe essere riportato nell'elenco:

{
  "overrides": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl",
      "overrideValue": "14"
    }
  ]
}

Creazione di sostituzioni di quote a livello di area geografica o zona

Alcuni limiti di quota vengono applicati a livello di area geografica o di zona, come indicato dalla presenza di {region} o {zone} nel campo unit del limite. Ad esempio, un limite con l'unità "1/{project}/{region}" viene applicato a livello di area geografica. L'applicazione di un override a tale limite modifica la quota di base su ogni area geografica o zona. Per modificare la quota solo per un'area geografica o una zona specifica, aggiungi una dimensione della quota utilizzando il campo dimensions durante la creazione dell'override. Ad esempio, crea un override regionale su un limite di quota a livello di area geografica di Compute Engine come segue:

REGIONAL_LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion"
gcurl "https://serviceusage.googleapis.com/v1beta1/${REGIONAL_LIMIT_RESOURCE_NAME}/consumerOverrides" -d '{"overrideValue": "65", "dimensions": {"region": "southamerica-east1"} }'

Per verificare che sia stato creato l'override a livello di area geografica, elenca tutte le sostituzioni del consumatore per il limite:

gcurl "https://serviceusage.googleapis.com/v1beta1/${REGIONAL_LIMIT_RESOURCE_NAME}/consumerOverrides"

L'override regionale appena creato dovrebbe essere riportato nell'elenco:

{
  "overrides": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/consumerOverrides/Cg1RdW90YU92ZXJyaWRlGhwKBnJlZ2lvbhISc291dGhhbWVyaWNhLWVhc3Qx",
      "overrideValue": "65",
      "dimensions": {
        "region": "southamerica-east1"
      }
    }
  ]
}

Aggiornamento di un override della quota consumer

Il proprietario di un progetto può anche modificare il valore di un override del consumatore esistente nel progetto.

Ad esempio, supponiamo che una chiamata di creazione precedente abbia restituito una sostituzione con un campo name simile al seguente:

name: "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl"

quindi utilizza questo nome per identificare l'override da aggiornare, in questo modo:

OVERRIDE_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl"
gcurl "https://serviceusage.googleapis.com/v1beta1/${OVERRIDE_RESOURCE_NAME}" -X PATCH -d '{"overrideValue": "13"}'

Quando la chiamata ha esito positivo, restituisce un identificatore dell'operazione, che rappresenta il lavoro in corso sul server, mentre la modifica della quota si propaga ai sistemi di backend:

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

Per verificare l'avanzamento dell'operazione, è sufficiente usare il suo name:

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

Se l'operazione ha esito positivo, il messaggio di risposta include done: true e contiene la risorsa di override aggiornata. Se l'operazione non riesce, il messaggio di risposta include done: true, ma contiene i dettagli dell'errore anziché la risorsa aggiornata.

Per verificare che l'override sia stato aggiornato, elenca tutte le sostituzioni del consumatore per il limite:

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

Ora la sostituzione dovrebbe essere visualizzata nell'elenco con il valore aggiornato:

{
  "overrides": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl",
      "overrideValue": "13"
    }
  ]
}

Eliminazione di una sostituzione della quota consumer

Il proprietario di un progetto può anche rimuovere l'override dei consumatori.

Ad esempio, supponiamo che una chiamata di creazione precedente abbia restituito una sostituzione con un campo name simile al seguente:

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

Per eliminare l'override, esegui la seguente sequenza:

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

Per verificare che l'override sia stato eliminato, elenca tutte le sostituzioni del consumatore per il limite:

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

La sostituzione eliminata non dovrebbe più apparire nell'elenco.

Forzare le modifiche significative della quota

Se una modifica apportata alla quota causerebbe una riduzione superiore al 10%, la chiamata verrà rifiutata, come misura di sicurezza, per evitare di ridurre la quota in modo troppo rapido. Per ignorare questa limitazione, utilizza il flag force. Ad esempio, ecco una chiamata creata che utilizza il flag forzato:

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