Ricevi stime dei costi per i tuoi carichi di lavoro Google Cloud

Questa pagina mostra come iniziare a utilizzare l'API Cost Estimation e include esempi di richieste API per scenari di costo comuni. Se vuoi utilizzare la console Google Cloud, scopri come visualizzare stime nella console Google Cloud

Puoi utilizzare l'API Cost Estimation per avere un'idea dei costi per carichi di lavoro ipotetici. Ad esempio, se vuoi definire un budget per una nuova applicazione, l'API ti aiuta a stimare il costo che potrebbe costare l'infrastruttura dell'applicazione nel tempo. Puoi anche ottenere una stima che include i crediti derivanti da uno 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 i prezzi negoziato, puoi anche stimare i costi con i prezzi negoziati.

Prima di iniziare

  • Per chiamare l'API, richiedi una chiave API.

  • Se vuoi ottenere stime con i prezzi del contratto, devi disporre dell'autorizzazione billing.accounts.getPricing. Se chiami l'API utilizzando un account di servizio, l'account di servizio deve avere l'autorizzazione.

    I seguenti ruoli predefiniti hanno l'autorizzazione billing.accounts.getPricing:

    • Amministratore account di fatturazione
    • Visualizzatore account di fatturazione
  • Facoltativamente, attiva la condivisione degli sconti per gli sconti per impegno di utilizzo (CUD). Se non abiliti la condivisione degli sconti e l'utilizzo si verifica in un progetto che non fa parte dell'impegno, i costi stimati e i costi effettivi potrebbero variare notevolmente.

Comprendere i componenti di una stima

Quando definisci i tuoi carichi di lavoro per una stima dei costi, considera i seguenti fattori:

  • Carico di lavoro: rappresenta l'utilizzo di un singolo prodotto Google Cloud per il periodo di tempo della stima. Ad esempio, un carico di lavoro potrebbe essere una macchina virtuale Compute Engine n2 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 i prodotti Google Cloud necessari per l'applicazione. Ad esempio, uno scenario di costo potrebbe essere 5 macchine virtuali n2 e 4 gibibyte (GiB) di Cloud Storage per una settimana.

    Nella richiesta API, configuri lo scenario di costo nell'oggetto costScenario, che include il periodo di tempo e l'elenco dei carichi di lavoro.

  • Intervallo di tempo: la durata per cui vuoi stimare i costi. Puoi ottenere stime per durate comprese tra 1 ora e 10 anni.

    Nella richiesta API, definisci l'intervallo di tempo utilizzando l'oggetto estimateDuration.

  • Segmenti temporali: puoi suddividere la stima in segmenti di tempo, in cui l'utilizzo varia in un determinato periodo di tempo. Ad esempio, puoi richiedere una stima per un periodo di tempo di quattro settimane, durante le quali inizi con 5 VM per una settimana, quindi aumenti 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 imposti l'inizio di un segmento utilizzando estimationTimeFrameOffset.

  • Utilizzo: rappresenta la quantità di utilizzo durante un segmento di tempo. Ad esempio, puoi 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 l'oggetto usage. Quando effettui la richiesta API, se fornisci un'unità errata per l'utilizzo, il messaggio di errore include l'unità corretta.

Limitazioni

  • I carichi di lavoro che puoi modellare utilizzando l'API non sono in grado di rispecchiare perfettamente i tuoi pattern di utilizzo reali. Ad esempio, puoi modellare carichi di lavoro che cambiano ogni ora utilizzando l'API, ma l'utilizzo di Compute Engine viene registrato a livello di microsecondo.

  • L'utilizzo stimato del modello 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 per impegno di utilizzo (CUD) vengono attribuiti a tutti i progetti che utilizzano il servizio. Ad esempio, se il progetto A ha consumato 75 $di utilizzo e il progetto B ha consumato 25 $, il progetto A verrebbe coperto fino al 75% del credito disponibile e il progetto B fino al 25%.

    Scopri di più su come vengono attribuiti i crediti dello 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 del networking collegato alle VM di Compute Engine nello scenario di costo.

  • Le stime non prendono in considerazione gli sconti per utilizzo sostenuto (SUD).

  • Le stime non prendono in considerazione i crediti del tuo account, come i crediti promozionali o gli sconti di offerte private su Cloud Marketplace.

  • Le stime non tengono conto di variazioni future dei prezzi per i prodotti Google Cloud.

Esempi di scenari di costo

I seguenti esempi mostrano le chiamate API per ottenere stime dei costi. Per informazioni dettagliate sul formato della richiesta, consulta i riferimenti per le API.

Nella risposta dell'API, i costi netti stimati sono 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 di 5 macchine virtuali n1 personalizzate, al prezzo di listino, per 100 ore di utilizzo.

Nella richiesta, usageRate indica quante risorse fanno parte dello scenario di costi.

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 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:

arricciare

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

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 attuale:

@'
{
  "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 questo 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"
La risposta viene archiviata in un file denominato cost-estimate.json, con il seguente contenuto.
{
  {
    "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 di 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: il tuo ID account di fatturazione Cloud. All'account deve essere associato un contratto con prezzi personalizzati.

Metodo HTTP e URL:

POST https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario

Corpo JSON 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:

arricciare

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

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 attuale:

@'
{
  "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 questo 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"
La risposta viene archiviata in un file denominato cost-estimate.json, con il seguente contenuto.
{
  "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"
  }
}

Stima il costo dei carichi di lavoro che cambiano nel tempo

La seguente richiesta API ottiene una stima di 1 mese di utilizzo, con prezzi contrattuali tipo, per le seguenti risorse:

  • 7000 GiB di spazio di archiviazione
  • 8 VM n2-standard-4
  • 3 VM n2-standard-4 aggiuntive per 14 giorni al mese

Questo esempio utilizza il campo estimationTimeFrameOffset per determinare quando inizia un nuovo segmento di tempo. Il numero di VM cambia 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 di una riduzione del carico di lavoro a 3 VM 20 giorni dopo l'inizio del periodo di tempo, puoi aggiungere un altro segmento a usageRateTimelineEntries, come 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 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:

arricciare

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

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 attuale:

@'
{
  "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 questo 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"
La risposta viene archiviata in un file denominato cost-estimate.json, con il seguente contenuto.
{
  "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 se disponi di uno sconto per impegno di utilizzo (CUD)

L'esempio seguente mostra una richiesta API per una VM a2-megagpu, con una 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: il tuo ID account di fatturazione Cloud. All'account deve essere associato un contratto con prezzi personalizzati.

Metodo HTTP e URL:

POST https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario

Corpo JSON 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:

arricciare

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

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 attuale:

@'
{
  "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 questo 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"
La risposta viene archiviata in un file denominato cost-estimate.json, con il seguente contenuto. La stima dei risparmi derivanti dallo sconto per impegno di utilizzo (CUD) si trova nell'oggetto "commitmentCostEstimateds":
{
  "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 il 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 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:

arricciare

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

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 attuale:

@'
{
  "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 questo 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"
La risposta viene archiviata in un file denominato cost-estimate.json, con il seguente contenuto.
{
  "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"
  }
}