Gestione della quota di servizio
Questa pagina descrive come visualizzare tutte le metriche e i limiti delle quote di un progetto Google Cloud per un servizio specifico e come limitare l'utilizzo della quota per quel servizio tramite una quota eseguire l'override. Puoi utilizzare Utilizzo dei servizi per gestire la quota per i tuoi progetti per qualsiasi servizio, inclusi i servizi Google Cloud pubblici e i servizi privati creati utilizzando Cloud Endpoints. Per ulteriori informazioni sulle differenze tra API e servizi pubblici e privati, consulta Servizi pubblici e privati.
Per la maggior parte dei casi d'uso operativi, il modo più semplice per gestire la quota è utilizzare la console Google Cloud. Se devi programmare in base all'API Service Usage,
consigliamo di utilizzare una delle nostre
librerie client. Per fare esperimenti con 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, vedi Gestire le risorse di utilizzo dei servizi con Terraform.
Prima di iniziare
Per utilizzare gli esempi in questa pagina, completa tutti i passaggi elencati nella
Guida introduttiva. Questi passaggi includono la definizione di gcurl
, che è un alias autenticato per il comando curl
standard, e la definizione della variabile di ambiente PROJECT_NUMBER
.
Acquisisci familiarità con il modello di quota di servizio per comprendere meglio la terminologia usata in questo tutorial.
Visualizzazione della quota di servizio
Per visualizzare tutte le metriche e i limiti delle quote che si applicano a un consumatore specifico in un servizio, utilizza il seguente comando:
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 il dei limiti alle metriche che si applicano a questo consumatore, i valori per limiti ed eventuali override. Ecco un esempio parziale di risposta:
{
"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 della quota solo per quella metrica, anziché per tutte le metriche, utilizza il relativo name
nell'URL. Ai fini di questo tutorial, la variabile di ambiente METRIC_RESOURCE_NAME
archivia il nome della risorsa della metrica della 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 fornito un nome specifico della risorsa metrica, la chiamata restituisce solo le informazioni relative a quella metrica:
{
"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 di quota solo per quel limite per quella metrica, anziché per tutti i limiti di una metrica o di tutte le metriche, utilizza il relativo 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 specificato 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 un override della quota del consumer
Il proprietario di un progetto può applicare un override del consumatore a un limite di quota specifico del progetto per ridurre la quantità totale di quota che il consumatore può addebitare in base a quel limite.
Tieni presente che una sostituzione da parte del consumatore non può aumentare la quota disponibile oltre quanto consentito dal valore predefinito del servizio e da eventuali sostituzioni esistenti da parte di altre parti (ad esempio il proprietario del servizio o l'amministratore della quota di un'organizzazione). Per aumentare la quota disponibile, utilizza l'opzione Modifica quote nella pagina principale delle quote o chiedi all'amministratore dell'organizzazione un aumento della quota.
Per identificare un limite da ignorare, utilizza prima uno dei metodi precedenti per trovare il limite di quota che ti interessa. Quindi, utilizza il campo del nome del limite di quota per creare un nuovo override del consumer per quel limite. Il seguente esempio riguarda il limite per progetto della metrica della quota "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"}'
Se la chiamata va a buon fine, restituisce un identificatore dell'operazione, che rappresenta il lavoro in corso sul server, man mano che la modifica della quota si propaga ai sistemi di backend:
{
"name": "operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
}
Per verificare lo stato di avanzamento dell'operazione, utilizza name
:
OPERATION_NAME="operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
gcurl "https://serviceusage.googleapis.com/v1/${OPERATION_NAME}"
Se l'operazione riesce, il messaggio di risposta include done: true
e
contiene la risorsa di override appena creata. Se l'operazione non va a buon fine, 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 tutti gli override consumer per il limite:
gcurl "https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides"
L'override appena creato dovrebbe apparire 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 delle quote a livello di regione o zona
Alcuni limiti di quota vengono applicati in base alla regione o alla zona; questo è 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 regione. L'applicazione di un override a questo limite modifica la quota di base su ogni regione o zona. Per modificare la quota solo per una regione o una zona specifica, aggiungi una dimensione quota utilizzando il campo dimensions
durante la creazione della sostituzione. Ad esempio, crea un'override regionale per un limite di quota regionale di Compute Engine come questo:
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 l'override regionale sia stato creato, elenca tutte le sostituzioni dei consumatori per il limite:
gcurl "https://serviceusage.googleapis.com/v1beta1/${REGIONAL_LIMIT_RESOURCE_NAME}/consumerOverrides"
L'override regionale appena creato dovrebbe apparire 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 dell'override di un consumer esistente sul progetto.
Ad esempio, supponiamo che una chiamata create precedente abbia restituito un'override con un campo name
come questo:
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 la sostituzione da aggiornare, ad esempio:
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, man mano che la modifica della quota si propaga ai sistemi di backend:
{
"name": "operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
}
Per verificare lo stato di avanzamento dell'operazione, utilizza name
:
OPERATION_NAME="operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
gcurl "https://serviceusage.googleapis.com/v1/${OPERATION_NAME}"
Se l'operazione riesce, il messaggio di risposta include done: true
e contiene la risorsa di override aggiornata. Se l'operazione non va a buon fine, 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 tutti gli override consumer 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"
L'override dovrebbe ora essere visualizzato nell'elenco con il relativo 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 un override della quota consumer
Il proprietario di un progetto può anche rimuovere un'override del consumatore dal progetto.
Ad esempio, supponiamo che una chiamata create precedente abbia restituito un'override con un campo name
come questo:
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 tutti gli override consumer 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"
L'override eliminato non dovrebbe più essere visualizzato nell'elenco.
Forzare modifiche sostanziali alla quota
Se una modifica dell'override della quota causa una diminuzione della quota impostata di oltre il 10%, la chiamata viene rifiutata come misura di sicurezza per evitare di diminuire accidentalmente la quota troppo rapidamente. Per ignorare questa limitazione, utilizza il flag force
. Ad esempio, di seguito è riportata una chiamata create che accetta il flag force:
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"}'