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

Questa pagina mostra come iniziare a utilizzare l'API Cost Estimation. 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 avere un'idea dei costi di una carichi di lavoro con scale out impegnativi. Ad esempio, se vuoi impostare 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 ai prezzi negoziati.

Prima di iniziare

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

  • Se vuoi ottenere delle stime con i prezzi dei tuoi contratti, devi disporre dei billing.accounts.getPricing autorizzazione. Se chiami l'API utilizzando un account di servizio, il servizio dell'account deve disporre dell'autorizzazione.

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

    • 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 abiliti la condivisione degli sconti e l'utilizzo si verifica in un progetto che non fa parte dell'impegno, i costi stimati e quelli effettivi potrebbero differiscono in modo significativo.

Comprendere i componenti di una stima

Quando definisci i carichi di lavoro per ottenere una stima dei costi, considera questi aspetti 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 An n2 macchina virtuale Compute Engine per 1 settimana.

    Nella richiesta API definisci un elenco di carichi di lavoro nel 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 le stime per durate 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, dove i tuoi varia durante 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 il usageRateTimeline e impostando 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 il metodo 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 con l'API non possono rispecchiare perfettamente modelli 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.

  • Stima l'utilizzo del modello che si verifica in un singolo progetto. Se disponi per impegno di utilizzo (CUD) e hanno attivato la condivisione degli sconti tra progetti, le tariffe e i crediti per lo sconto per impegno di utilizzo (CUD) vengono attribuiti per 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 sarà coperto fino al 25%.

    Scopri di più su come vengono attribuiti i crediti per sconto per impegno di utilizzo (CUD).

  • Se l'utilizzo si verifica verso la fine del mese, potrebbe essere registrate nel mese di fatturazione successivo.

  • Le stime non includono il costo del networking collegato delle VM di Compute Engine nel tuo 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 per Google Cloud.

Esempi di scenari di costo

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 netti stimati 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 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 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 contrattuale

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 relativo alla determinazione del prezzo personalizzato.

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

Stima 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
  • 3 VM n2-standard-4 aggiuntive nell'arco di 14 giorni nel mese

Questo esempio utilizza il campo estimationTimeFrameOffset per determinare quando un nuovo inizia il 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 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 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 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 relativo alla determinazione del prezzo personalizzato.

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 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 i seguenti contenuti. La stima del risparmio grazie al Lo sconto per impegno di utilizzo (CUD) è nell'oggetto "commitmentCost Estimator":
{
  "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 una 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 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 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"
  }
}