Questa pagina mostra come iniziare a utilizzare l'API Cost Estimation e include esempi di richieste API per scenari di costo comuni. Se vuoi usa la console Google Cloud, scopri come ottenere stime nella console Google Cloud
Puoi utilizzare l'API Cost Estimation per farti un'idea dei costi per carichi di lavoro ipotizzati. Ad esempio, se vuoi stabilire il budget per una nuova applicazione, l'API ti aiuta a stimare il costo dell'infrastruttura per l'applicazione nel tempo. Puoi anche ottenere una stima che include i crediti di una sconto per impegno di utilizzo (CUD).
L'API supporta le stime per i seguenti servizi:
- Compute Engine
- Cloud Storage
- CDN Interconnect
- Cloud CDN
- VPC
Se hai un contratto con prezzi negoziati, puoi anche stimare i costi con i prezzi negoziati.
Prima di iniziare
Per chiamare l'API, ottenere una chiave API.
Se vuoi ricevere stime con i prezzi del contratto, devi disporre dell'autorizzazione
billing.accounts.getPricing
. Se chiami l'API utilizzando un account di servizio, il servizio dell'account deve disporre dell'autorizzazione.I seguenti ruoli predefiniti dispongono dell'autorizzazione
billing.accounts.getPricing
:- Amministratore account di fatturazione
- Visualizzatore account di fatturazione
Se vuoi, attivare la condivisione degli sconti per gli sconti per impegno di utilizzo (CUD). Se non attivi la condivisione dello sconto e il tuo utilizzo avviene in un progetto che non fa parte dell'impegno, i costi stimati e quelli effettivi potrebbero differire notevolmente.
Comprendere i componenti di una stima
Quando definisci i carichi di lavoro per una stima dei costi, tieni conto di questi fattori:
Carico di lavoro: rappresenta l'utilizzo di un singolo prodotto Google Cloud per la durata della stima. Ad esempio, un carico di lavoro potrebbe essere An n2 macchina virtuale Compute Engine per 1 settimana.
Nella richiesta API, definisci un elenco di carichi di lavoro nell'oggetto
workloads
.Scenario di costo: una raccolta di carichi di lavoro, che rappresenta il I prodotti Google Cloud necessari alla tua applicazione. Ad esempio, un costo uno scenario potrebbe essere 5 macchine virtuali n2 e 4 gibibyte (GiB) di Cloud Storage per una settimana.
Nella richiesta API, configuri lo scenario di costo nel oggetto
costScenario
, che include il periodo di tempo e l'elenco dei carichi di lavoro.Periodo di tempo: la durata per la quale vuoi stimare i costi. Puoi ottenere stima per durate comprese tra 1 ora e 10 anni.
Nella richiesta API, definisci l'intervallo di tempo utilizzando il
estimateDuration
.Segmenti di tempo: puoi suddividere la stima in segmenti di tempo in cui l'utilizzo varia in un determinato periodo di tempo. Ad esempio, puoi richiedere una per un intervallo di tempo di quattro settimane, durante il quale inizi con 5 VM per una settimana, poi aumenta a 8 VM per due settimane e riduci a 3 VM per l'ultima settimana.
Nella richiesta API, definisci i segmenti di tempo utilizzando l'oggetto
usageRateTimeline
e impostando l'inizio di un segmento utilizzandoestimationTimeFrameOffset
.Utilizzo: rappresenta la quantità di utilizzo durante un segmento di tempo. Ad esempio, potresti definire un segmento di tempo di 5 giorni durante il quale vuoi utilizzare 6 gibibyte (GiB) in un bucket Cloud Storage.
Nella richiesta API specifichi l'utilizzo utilizzando il metodo
usage
. Quando effettui la richiesta API, se fornisci un'unità scorretta per l'utilizzo, il messaggio di errore include l'unità corretta.
Limitazioni
I carichi di lavoro che puoi modellare utilizzando l'API non possono rispecchiare perfettamente i tuoi schemi di utilizzo reali. Ad esempio, puoi modellare carichi di lavoro che cambiano ogni ora utilizzando l'API, ma l'utilizzo di Compute Engine è registrato a livello di microsecondo.
Le stime modellano l'utilizzo che si verifica in un singolo progetto. Se hai sconti per impegno di utilizzo (CUD) e hai attivato la condivisione degli sconti su più progetti, le tariffe e i crediti per lo sconto vengono attribuiti a tutti i progetti che utilizzano il servizio. Ad esempio, se il progetto A ha consumato 75 $ di utilizzo e il consumo di $25 per il progetto B, il progetto A sarebbe coperto al 75% del credito disponibile e il progetto B sarebbe coperto fino al 25%.
Scopri di più su come vengono attribuiti i crediti per sconto per impegno di utilizzo (CUD).
Se l'utilizzo avviene verso la fine di un mese, potrebbe essere registrato nel mese di fatturazione successivo.
Le stime non includono il costo della rete collegata alle VM Compute Engine nello scenario di costo.
Le stime non tengono conto Sconti per utilizzo sostenuto (SUD).
Le stime non tengono conto dei crediti sul tuo account, ad esempio quelli crediti o sconti offerte private su Cloud Marketplace.
Le stime non tengono conto delle variazioni future dei prezzi dei prodotti Google Cloud.
Scenari di costo di esempio
I seguenti esempi mostrano le chiamate API per ottenere le stime dei costi. Per dettagli informazioni sul formato della richiesta, consulta Riferimento API.
Nella risposta dell'API, i costi stimati netti si trovano nei seguenti oggetti:
segmentTotalCostEstimate
: il costo stimato per un segmento di tempo.workloadTotalCostEstimate
: il costo stimato per un carico di lavoro.
Stima il costo delle macchine virtuali al prezzo di listino
La seguente richiesta API ottiene la stima per 5 macchine virtuali n1 personalizzate (VM), al prezzo di listino, per 100 ore di utilizzo.
Nella richiesta, usageRate
indica quante risorse fanno parte del costo
in questo scenario.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- API_KEY: la tua chiave API Google Cloud
Metodo HTTP e URL:
POST https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY
Corpo JSON della richiesta:
{ "costScenario": { "scenarioConfig": { "estimateDuration": "360000s" }, "workloads": [ { "name": "vm-example", "computeVmWorkload": { "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 5 } ] } }, "machineType": { "customMachineType": { "machineSeries": "n1", "virtualCpuCount": 4, "memorySizeGb": 4 } }, "region": "us-central1" } } ] } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
cat > request.json << 'EOF' { "costScenario": { "scenarioConfig": { "estimateDuration": "360000s" }, "workloads": [ { "name": "vm-example", "computeVmWorkload": { "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 5 } ] } }, "machineType": { "customMachineType": { "machineSeries": "n1", "virtualCpuCount": 4, "memorySizeGb": 4 } }, "region": "us-central1" } } ] } } EOF
Quindi, esegui questo comando per inviare la richiesta REST:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
--output cost-estimate.json \
"https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
@' { "costScenario": { "scenarioConfig": { "estimateDuration": "360000s" }, "workloads": [ { "name": "vm-example", "computeVmWorkload": { "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 5 } ] } }, "machineType": { "customMachineType": { "machineSeries": "n1", "virtualCpuCount": 4, "memorySizeGb": 4 } }, "region": "us-central1" } } ] } } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui il seguente comando per inviare la richiesta REST:
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-OutFile cost-estimate.json `
-Uri "https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY"
cost-estimate.json
, con
i seguenti contenuti.
{ { "costEstimationResult": { "segmentCostEstimates": [ { "segmentStartTime": { "estimationTimeFrameOffset": "0s" }, "workloadCostEstimates": [ { "name": "vm-example", "skuCostEstimates": [ { "sku": "services/6F81-5844-456A/skus/ACBC-6999-A1C4", "usageAmount": 2000, "usageUnit": "h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "66", "nanos": 348000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "66", "nanos": 348000000 } } }, { "sku": "services/6F81-5844-456A/skus/51E2-59BD-7A6E", "usageAmount": 2000, "usageUnit": "GiBy.h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 892000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 892000000 } } } ], "workloadTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "75", "nanos": 240000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "75", "nanos": 240000000 } } } ], "segmentTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "75", "nanos": 240000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "75", "nanos": 240000000 } } } ], "skus": [ { "sku": "services/6F81-5844-456A/skus/ACBC-6999-A1C4", "displayName": "Custom Instance Core running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 33174000 } } ], "unit": "h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/51E2-59BD-7A6E", "displayName": "Custom Instance Ram running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 4446000 } } ], "unit": "GiBy.h", "unitCount": 1 } } ] } ], "currencyCode": "USD" } } }
Stima il costo dell'utilizzo di Cloud Storage al prezzo del contratto
La seguente richiesta API ottiene la stima per 1 mese di 500 gibiBytes (GiB) in asia-southeast2, a un prezzo contrattuale:
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- BILLING_ACCOUNT_ID: l'ID del tuo account di fatturazione Cloud. All'account deve essere associato un contratto di prezzi personalizzati.
Metodo HTTP e URL:
POST https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario
Corpo JSON della richiesta:
{ "costScenario": { "workloads": [ { "name": "combined-example-storage", "cloudStorageWorkload": { "region": { "name": "us-central1" }, "storageClass": "archive", "dataStored": { "usageRateTimeline": { "unit": "GiBy", "usageRateTimelineEntries": [ { "usageRate": 7000 } ] } } } }, { "name": "combined-example-compute", "computeVmWorkload": { "machineType": { "predefinedMachineType": { "machineType": "n2-standard-4" } }, "region": "us-central1", "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 8 }, { "usageRate": 11, "effectiveTime": { "estimationTimeFrameOffset": "1209600s" } } ] } } } } ], "scenarioConfig": { "estimateDuration": "2628000s" } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
cat > request.json << 'EOF' { "costScenario": { "workloads": [ { "name": "combined-example-storage", "cloudStorageWorkload": { "region": { "name": "us-central1" }, "storageClass": "archive", "dataStored": { "usageRateTimeline": { "unit": "GiBy", "usageRateTimelineEntries": [ { "usageRate": 7000 } ] } } } }, { "name": "combined-example-compute", "computeVmWorkload": { "machineType": { "predefinedMachineType": { "machineType": "n2-standard-4" } }, "region": "us-central1", "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 8 }, { "usageRate": 11, "effectiveTime": { "estimationTimeFrameOffset": "1209600s" } } ] } } } } ], "scenarioConfig": { "estimateDuration": "2628000s" } } } EOF
Quindi, esegui questo comando per inviare la richiesta REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
--output cost-estimate.json \
"https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
@' { "costScenario": { "workloads": [ { "name": "combined-example-storage", "cloudStorageWorkload": { "region": { "name": "us-central1" }, "storageClass": "archive", "dataStored": { "usageRateTimeline": { "unit": "GiBy", "usageRateTimelineEntries": [ { "usageRate": 7000 } ] } } } }, { "name": "combined-example-compute", "computeVmWorkload": { "machineType": { "predefinedMachineType": { "machineType": "n2-standard-4" } }, "region": "us-central1", "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 8 }, { "usageRate": 11, "effectiveTime": { "estimationTimeFrameOffset": "1209600s" } } ] } } } } ], "scenarioConfig": { "estimateDuration": "2628000s" } } } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui il seguente comando per inviare la richiesta REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-OutFile cost-estimate.json `
-Uri "https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario"
cost-estimate.json
con i seguenti contenuti.
{ "costEstimationResult": { "segmentCostEstimates": [ { "segmentStartTime": { "estimationTimeFrameOffset": "0s" }, "workloadCostEstimates": [ { "name": "combined-example-storage", "skuCostEstimates": [ { "sku": "services/95FF-2EF5-5EA1/skus/EC4B-C190-470D", "usageAmount": 7000, "usageUnit": "GiBy.mo", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 400000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 400000000 } } } ], "workloadTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 400000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 400000000 } } }, { "name": "combined-example-compute", "skuCostEstimates": [ { "sku": "services/6F81-5844-456A/skus/BB77-5FDA-69D9", "usageAmount": 28088, "usageUnit": "h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "887", "nanos": 889768000 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-159", "nanos": -850504800 }, "creditType": "Sustained Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "728", "nanos": 39263200 } } }, { "sku": "services/6F81-5844-456A/skus/5B01-D157-A097", "usageAmount": 112352, "usageUnit": "GiBy.h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "476", "nanos": 35424000 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-85", "nanos": -702646400 }, "creditType": "Sustained Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "390", "nanos": 332777600 } } } ], "workloadTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "1363", "nanos": 925192000 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-245", "nanos": -553151200 }, "creditType": "Sustained Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "1118", "nanos": 372040800 } } } ], "segmentTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "1372", "nanos": 325192000 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-245", "nanos": -553151200 }, "creditType": "Sustained Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "1126", "nanos": 772040800 } } } ], "skus": [ { "sku": "services/95FF-2EF5-5EA1/skus/EC4B-C190-470D", "displayName": "Archive Storage Iowa", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 1200000 } } ], "unit": "GiBy.mo", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/BB77-5FDA-69D9", "displayName": "N2 Instance Core running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 31611000 } } ], "unit": "h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/5B01-D157-A097", "displayName": "N2 Instance Ram running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 4237000 } } ], "unit": "GiBy.h", "unitCount": 1 } } ] } ], "currencyCode": "USD" } }
Stimare il costo dei carichi di lavoro che cambiano nel tempo
La seguente richiesta API ottiene una stima per 1 mese di utilizzo, con prezzi contrattuali personalizzati per le seguenti risorse:
- 7000 GiB di spazio di archiviazione
- 8 VM n2-standard-4
- Altre 3 VM n2-standard-4 14 giorni dopo l'inizio del mese
Questo esempio utilizza il campo estimationTimeFrameOffset
per determinare quando inizia un nuovo segmento di tempo. Il numero di VM passa da 8
a 11
(usageRate
)
dopo 1209600 secondi (14 giorni), come mostrato in questo snippet:
"usageRateTimeline": {
"usageRateTimelineEntries": [
{
"usageRate": 8
},
{
"usageRate": 11,
"effectiveTime": {
"estimationTimeFrameOffset": "1209600s"
}
}
]
Analogamente, se vuoi stimare il costo se il carico di lavoro è stato ridotto a 3 VM
20 giorni dall'inizio di questo intervallo di tempo, puoi aggiungere un altro segmento a
usageRateTimelineEntries
, mostrato in questo esempio:
"usageRateTimeline": {
"usageRateTimelineEntries": [
{
"usageRate": 8
},
{
"usageRate": 11,
"effectiveTime": {
"estimationTimeFrameOffset": "1209600s"
}
}
{
"usageRate": 3,
"effectiveTime": {
"estimationTimeFrameOffset": "1728000s"
}
}
]
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- API_KEY: la tua chiave API Google Cloud
Metodo HTTP e URL:
POST https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY
Corpo JSON della richiesta:
{ "costScenario": { "workloads": [ { "name": "combined-example-storage", "cloudStorageWorkload": { "region": { "name": "us-central1" }, "storageClass": "archive", "dataStored": { "usageRateTimeline": { "unit": "GiBy", "usageRateTimelineEntries": [ { "usageRate": 7000 } ] } } } }, { "name": "combined-example-compute", "computeVmWorkload": { "machineType": { "predefinedMachineType": { "machineType": "n2-standard-4" } }, "region": "us-central1", "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 8 }, { "usageRate": 11, "effectiveTime": { "estimationTimeFrameOffset": "1209600s" } } ] } } } } ], "scenarioConfig": { "estimateDuration": "2628000s" } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
cat > request.json << 'EOF' { "costScenario": { "workloads": [ { "name": "combined-example-storage", "cloudStorageWorkload": { "region": { "name": "us-central1" }, "storageClass": "archive", "dataStored": { "usageRateTimeline": { "unit": "GiBy", "usageRateTimelineEntries": [ { "usageRate": 7000 } ] } } } }, { "name": "combined-example-compute", "computeVmWorkload": { "machineType": { "predefinedMachineType": { "machineType": "n2-standard-4" } }, "region": "us-central1", "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 8 }, { "usageRate": 11, "effectiveTime": { "estimationTimeFrameOffset": "1209600s" } } ] } } } } ], "scenarioConfig": { "estimateDuration": "2628000s" } } } EOF
Quindi, esegui questo comando per inviare la richiesta REST:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
--output cost-estimate.json \
"https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
@' { "costScenario": { "workloads": [ { "name": "combined-example-storage", "cloudStorageWorkload": { "region": { "name": "us-central1" }, "storageClass": "archive", "dataStored": { "usageRateTimeline": { "unit": "GiBy", "usageRateTimelineEntries": [ { "usageRate": 7000 } ] } } } }, { "name": "combined-example-compute", "computeVmWorkload": { "machineType": { "predefinedMachineType": { "machineType": "n2-standard-4" } }, "region": "us-central1", "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 8 }, { "usageRate": 11, "effectiveTime": { "estimationTimeFrameOffset": "1209600s" } } ] } } } } ], "scenarioConfig": { "estimateDuration": "2628000s" } } } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui il seguente comando per inviare la richiesta REST:
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-OutFile cost-estimate.json `
-Uri "https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY"
cost-estimate.json
con i seguenti contenuti.
{ "costEstimationResult": { "segmentCostEstimates": [ { "segmentStartTime": { "estimationTimeFrameOffset": "0s" }, "workloadCostEstimates": [ { "name": "combined-example-storage", "skuCostEstimates": [ { "sku": "services/95FF-2EF5-5EA1/skus/EC4B-C190-470D", "usageAmount": 7000, "usageUnit": "GiBy.mo", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 400000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 400000000 } } } ], "workloadTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 400000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 400000000 } } }, { "name": "combined-example-compute", "skuCostEstimates": [ { "sku": "services/6F81-5844-456A/skus/BB77-5FDA-69D9", "usageAmount": 28088, "usageUnit": "h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "887", "nanos": 889768000 }, "netCostEstimate": { "currencyCode": "USD", "units": "887", "nanos": 889768000 } } }, { "sku": "services/6F81-5844-456A/skus/5B01-D157-A097", "usageAmount": 112352, "usageUnit": "GiBy.h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "476", "nanos": 35424000 }, "netCostEstimate": { "currencyCode": "USD", "units": "476", "nanos": 35424000 } } } ], "workloadTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "1363", "nanos": 925192000 }, "netCostEstimate": { "currencyCode": "USD", "units": "1363", "nanos": 925192000 } } } ], "segmentTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "1372", "nanos": 325192000 }, "netCostEstimate": { "currencyCode": "USD", "units": "1372", "nanos": 325192000 } } } ], "skus": [ { "sku": "services/95FF-2EF5-5EA1/skus/EC4B-C190-470D", "displayName": "Archive Storage Iowa", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 1200000 } } ], "unit": "GiBy.mo", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/BB77-5FDA-69D9", "displayName": "N2 Instance Core running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 31611000 } } ], "unit": "h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/5B01-D157-A097", "displayName": "N2 Instance Ram running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 4237000 } } ], "unit": "GiBy.h", "unitCount": 1 } } ] } ], "currencyCode": "USD" } }
Stima il costo dei carichi di lavoro con uno sconto per impegno di utilizzo (CUD)
L'esempio seguente mostra una richiesta API per una VM a2-megagpu, con un GPU NVIDIA Tesla A100 e un disco permanente con carico estremo, per 5 ore (18.000 secondi), con prezzi contrattuali e un impegno di 1 anno.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- BILLING_ACCOUNT_ID: l'ID del tuo account di fatturazione Cloud. All'account deve essere associato un contratto di prezzi personalizzati.
Metodo HTTP e URL:
POST https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario
Corpo JSON della richiesta:
{ "costScenario": { "workloads": [{ "name": "Custom VM", "computeVmWorkload": { "region": "us-central1", "machineType": { "predefinedMachineType": { "machineType": "a2-megagpu-16g" } }, "guestAccelerator": { "acceleratorType": "nvidia-tesla-a100", "acceleratorCount": "1" }, "persistentDisks": [{ "diskType": "pd-extreme", "scope": "SCOPE_ZONAL", "diskSize": { "usageRateTimeline": { "unit": "GiBy", "usageRateTimelineEntries": [{ "usageRate": 1000.0 }] } }, "provisionedIops": { "usageRateTimeline": { "usageRateTimelineEntries": [{ "usageRate": 15000.0 }] } } }], "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [{ "usageRate": 1.0 }] } } } }], "commitments": [{ "name": "VM commitment", "vmResourceBasedCud": { "region": "us-central1", "virtualCpuCount": "48", "memorySizeGb": 680.0, "plan": "TWELVE_MONTH", "machineSeries": "a2" } }], "scenarioConfig": { "estimateDuration": "18000s" } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
cat > request.json << 'EOF' { "costScenario": { "workloads": [{ "name": "Custom VM", "computeVmWorkload": { "region": "us-central1", "machineType": { "predefinedMachineType": { "machineType": "a2-megagpu-16g" } }, "guestAccelerator": { "acceleratorType": "nvidia-tesla-a100", "acceleratorCount": "1" }, "persistentDisks": [{ "diskType": "pd-extreme", "scope": "SCOPE_ZONAL", "diskSize": { "usageRateTimeline": { "unit": "GiBy", "usageRateTimelineEntries": [{ "usageRate": 1000.0 }] } }, "provisionedIops": { "usageRateTimeline": { "usageRateTimelineEntries": [{ "usageRate": 15000.0 }] } } }], "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [{ "usageRate": 1.0 }] } } } }], "commitments": [{ "name": "VM commitment", "vmResourceBasedCud": { "region": "us-central1", "virtualCpuCount": "48", "memorySizeGb": 680.0, "plan": "TWELVE_MONTH", "machineSeries": "a2" } }], "scenarioConfig": { "estimateDuration": "18000s" } } } EOF
Quindi, esegui questo comando per inviare la richiesta REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
--output cost-estimate.json \
"https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
@' { "costScenario": { "workloads": [{ "name": "Custom VM", "computeVmWorkload": { "region": "us-central1", "machineType": { "predefinedMachineType": { "machineType": "a2-megagpu-16g" } }, "guestAccelerator": { "acceleratorType": "nvidia-tesla-a100", "acceleratorCount": "1" }, "persistentDisks": [{ "diskType": "pd-extreme", "scope": "SCOPE_ZONAL", "diskSize": { "usageRateTimeline": { "unit": "GiBy", "usageRateTimelineEntries": [{ "usageRate": 1000.0 }] } }, "provisionedIops": { "usageRateTimeline": { "usageRateTimelineEntries": [{ "usageRate": 15000.0 }] } } }], "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [{ "usageRate": 1.0 }] } } } }], "commitments": [{ "name": "VM commitment", "vmResourceBasedCud": { "region": "us-central1", "virtualCpuCount": "48", "memorySizeGb": 680.0, "plan": "TWELVE_MONTH", "machineSeries": "a2" } }], "scenarioConfig": { "estimateDuration": "18000s" } } } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui il seguente comando per inviare la richiesta REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-OutFile cost-estimate.json `
-Uri "https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario"
cost-estimate.json
con i seguenti contenuti. La stima dei risparmi derivanti dal
Contratto di Unione è nell'oggetto "commitmentCostEstimates":
{ "costEstimationResult": { "segmentCostEstimates": [ { "segmentStartTime": { "estimationTimeFrameOffset": "0s" }, "workloadCostEstimates": [ { "name": "Custom VM", "skuCostEstimates": [ { "sku": "services/6F81-5844-456A/skus/2922-40C5-B19F", "usageAmount": 480, "usageUnit": "h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "15", "nanos": 173280000 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-7", "nanos": -586640000 }, "creditType": "Committed Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "7", "nanos": 586640000 } } }, { "sku": "services/6F81-5844-456A/skus/2390-DCAF-DA38", "usageAmount": 6800, "usageUnit": "GiBy.h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "28", "nanos": 811600000 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-6", "nanos": -609720000 }, "creditType": "Committed Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "22", "nanos": 201880000 } } }, { "sku": "services/6F81-5844-456A/skus/039F-D0DA-4055", "usageAmount": 5, "usageUnit": "h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "14", "nanos": 669540000 }, "netCostEstimate": { "currencyCode": "USD", "units": "14", "nanos": 669540000 } } }, { "sku": "services/6F81-5844-456A/skus/165B-942F-F345", "usageAmount": 6.8493150684931505, "usageUnit": "GiBy.mo", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "nanos": 856164383 }, "netCostEstimate": { "currencyCode": "USD", "nanos": 856164383 } } }, { "sku": "services/6F81-5844-456A/skus/DCA4-F1BE-57C4", "usageAmount": 102.73972602739725, "usageUnit": "mo", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "6", "nanos": 678082191 }, "netCostEstimate": { "currencyCode": "USD", "units": "6", "nanos": 678082191 } } } ], "workloadTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "66", "nanos": 188666574 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-14", "nanos": -196360000 }, "creditType": "Committed Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "51", "nanos": 992306574 } } } ], "segmentTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "75", "nanos": 131906574 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-14", "nanos": -196360000 }, "creditType": "Committed Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "60", "nanos": 935546574 } }, "commitmentCostEstimates": [ { "name": "VM commitment", "skuCostEstimates": [ { "sku": "services/6F81-5844-456A/skus/3A31-931E-6360", "usageAmount": 240, "usageUnit": "h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "4", "nanos": 779600000 }, "netCostEstimate": { "currencyCode": "USD", "units": "4", "nanos": 779600000 } } }, { "sku": "services/6F81-5844-456A/skus/220C-35D0-70E0", "usageAmount": 1560, "usageUnit": "GiBy.h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "4", "nanos": 163640000 }, "netCostEstimate": { "currencyCode": "USD", "units": "4", "nanos": 163640000 } } } ], "commitmentTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 943240000 }, "netCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 943240000 } } } ] } ], "skus": [ { "sku": "services/6F81-5844-456A/skus/3A31-931E-6360", "displayName": "Commitment v1: A2 Cpu in Americas for 1 Year", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 19915000 } } ], "unit": "h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/220C-35D0-70E0", "displayName": "Commitment v1: A2 Ram in Americas for 1 Year", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 2669000 } } ], "unit": "GiBy.h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/039F-D0DA-4055", "displayName": "Nvidia Tesla A100 GPU running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "units": "2", "nanos": 933908000 } } ], "unit": "h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/165B-942F-F345", "displayName": "Extreme PD Capacity", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 125000000 } } ], "unit": "GiBy.mo", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/DCA4-F1BE-57C4", "displayName": "Extreme PD IOPS", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 65000000 } } ], "unit": "mo", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/2922-40C5-B19F", "displayName": "A2 Instance Core running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 31611000 } } ], "unit": "h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/2390-DCAF-DA38", "displayName": "A2 Instance Ram running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 4237000 } } ], "unit": "GiBy.h", "unitCount": 1 } } ] } ], "currencyCode": "USD" } }
Stima del costo di una VM con licenza premium al prezzo di listino
L'esempio seguente mostra una richiesta API per 5 macchine virtuali n1 personalizzate con una licenza premium di Windows Server 2022 DC al prezzo di listino per 100 ore.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- API_KEY: la tua chiave API Google Cloud
Metodo HTTP e URL:
POST https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY
Corpo JSON della richiesta:
{ "costScenario": { "scenarioConfig": { "estimateDuration": "360000s" }, "workloads": [ { "name": "vm-example", "computeVmWorkload": { "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 5 } ] } }, "machineType": { "customMachineType": { "machineSeries": "n1", "virtualCpuCount": 4, "memorySizeGb": 4 } }, "region": "us-central1", "licenses": "projects/windows-cloud/global/licenses/windows-server-2022-dc" } } ] } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
cat > request.json << 'EOF' { "costScenario": { "scenarioConfig": { "estimateDuration": "360000s" }, "workloads": [ { "name": "vm-example", "computeVmWorkload": { "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 5 } ] } }, "machineType": { "customMachineType": { "machineSeries": "n1", "virtualCpuCount": 4, "memorySizeGb": 4 } }, "region": "us-central1", "licenses": "projects/windows-cloud/global/licenses/windows-server-2022-dc" } } ] } } EOF
Quindi, esegui questo comando per inviare la richiesta REST:
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
--output cost-estimate.json \
"https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
.
Esegui questo comando nel terminale per creare o sovrascrivere
questo file nella directory corrente:
@' { "costScenario": { "scenarioConfig": { "estimateDuration": "360000s" }, "workloads": [ { "name": "vm-example", "computeVmWorkload": { "instancesRunning": { "usageRateTimeline": { "usageRateTimelineEntries": [ { "usageRate": 5 } ] } }, "machineType": { "customMachineType": { "machineSeries": "n1", "virtualCpuCount": 4, "memorySizeGb": 4 } }, "region": "us-central1", "licenses": "projects/windows-cloud/global/licenses/windows-server-2022-dc" } } ] } } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui il seguente comando per inviare la richiesta REST:
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-OutFile cost-estimate.json `
-Uri "https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY"
cost-estimate.json
, con
i seguenti contenuti.
{ "costEstimationResult": { "segmentCostEstimates": [ { "segmentStartTime": { "estimationTimeFrameOffset": "0s" }, "workloadCostEstimates": [ { "name": "vm-example", "skuCostEstimates": [ { "sku": "services/6F81-5844-456A/skus/ACBC-6999-A1C4", "usageAmount": 2000, "usageUnit": "h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "66", "nanos": 348000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "66", "nanos": 348000000 } } }, { "sku": "services/6F81-5844-456A/skus/51E2-59BD-7A6E", "usageAmount": 2000, "usageUnit": "GiBy.h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 892000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 892000000 } } }, { "sku": "services/6F81-5844-456A/skus/92D2-8A8F-DF54", "usageAmount": 2000, "usageUnit": "h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "92" }, "netCostEstimate": { "currencyCode": "USD", "units": "92" } } } ], "workloadTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "167", "nanos": 240000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "167", "nanos": 240000000 } } } ], "segmentTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "167", "nanos": 240000000 }, "netCostEstimate": { "currencyCode": "USD", "units": "167", "nanos": 240000000 } } } ], "skus": [ { "sku": "services/6F81-5844-456A/skus/92D2-8A8F-DF54", "displayName": "Licensing Fee for Windows Server 2022 Datacenter Edition on VM", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 46000000 } } ], "unit": "h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/ACBC-6999-A1C4", "displayName": "Custom Instance Core running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 33174000 } } ], "unit": "h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/51E2-59BD-7A6E", "displayName": "Custom Instance Ram running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 4446000 } } ], "unit": "GiBy.h", "unitCount": 1 } } ] } ], "currencyCode": "USD" } }