このページでは、Cost Estimator API の使い方と、一般的なコストシナリオでの API リクエストの使用例について説明します。Google Cloud コンソールを使用する場合は、Google Cloud コンソールで見積もりを取得する方法をご覧ください。
Cost Estimator API では仮のワークロードについて費用を見積もることができます。たとえば、新しいアプリケーションの予算を知りたいときに、この API を使用すると、アプリケーションのインフラストラクチャの費用の推移を見積もることができます。確約利用割引(CUD)のクレジットを含む見積もりも取得できます。
API では、次のサービスの見積もりがサポートされています。
- Compute Engine
- Cloud Storage
- CDN Interconnect
- Cloud CDN
- VPC
交渉済みの料金契約がある場合は、その料金で費用の見積りを行うこともできます。
始める前に
API を呼び出すには、API キーを取得します。
契約料金で見積もりを取得する場合は、
billing.accounts.getPricing
権限が必要です。 サービス アカウントを使用して API を呼び出す場合は、サービス アカウントにこの権限が必要です。次の事前定義ロールには
billing.accounts.getPricing
権限が含まれています。- 請求先アカウント管理者
- 請求先アカウント閲覧者
必要に応じて、CUD の割引共有を有効にします。割引共有を有効にしていないときに、プロジェクト内でコミットメントに含まれていない使用量が発生すると、費用の見積もり金額と実際の金額が大きく異なることがあります。
見積もりの構成要素を理解する
費用見積もり用のワークロードを定義する場合は、次の要素を考慮してください。
ワークロード: 見積もり期間内に単一の Google Cloud プロダクトを使用していることを表します。たとえば、n2 Compute Engine 仮想マシンを 1 週間使用することを表します。
API リクエストでは、
workloads
オブジェクト内でワークロードのリストを定義します。費用シナリオ: アプリケーションに必要な Google Cloud プロダクトを表すワークロードの集合。たとえば、5 台の n2 仮想マシンと 4 ギビバイト(GiB)の Cloud Storage を 1 週間使用することを表します
API リクエストでは、
costScenario
オブジェクトに費用シナリオを構成します。このオブジェクトには期間とワークロードのリストが含まれます。期間: 費用を見積もる期間。1 時間から 10 年までの期間で見積もりを取得できます。
API リクエストでは、
estimateDuration
オブジェクトを使用して期間を定義します。時間セグメント: 見積もりを時間セグメントに分割できます。時間セグメントにより使用量が変化します。たとえば、4 週間の見積もりをリクエストするとします。最初の 1 週間は 5 台の VM を使用し、その後、2 週間は VM を 8 台に増やして、最終週は VM を 3 台に減らします。
API リクエストでは、
usageRateTimeline
オブジェクトを使用して時間セグメントを定義し、estimationTimeFrameOffset
を使用してセグメントの開始を設定します。使用量: 期間中の使用量を表します。たとえば、5 日間の期間を定義して、この間に Cloud Storage バケットで 6 GiB を使用します。
API リクエストでは、
usage
オブジェクトを使用して使用状況を指定します。API リクエストを行うときに間違った単位を使用すると、エラー メッセージに正しい単位が表示されます。
制限事項
API を使用してモデル化するワークロードに実際の使用パターンを完全に反映することはできません。たとえば、API を使用して時間単位で変化するワークロードをモデル化できますが、Compute Engine の使用量はマイクロ秒単位で記録されます。
単一プロジェクトで発生するモデル使用量の概算。確約利用割引(CUD)を利用し、複数のプロジェクトで割引共有を有効にしている場合、CUD の料金とクレジットは、サービスを使用するすべてのプロジェクトに関連付けられます。たとえば、プロジェクト A が $75 分を使用し、プロジェクト B が $25 分を使用した場合、プロジェクト A では使用可能なクレジット量の最大 75% までが対象となり、プロジェクト B では最大 25% までが対象となります。
月末に使用量が発生すると、その料金は翌月の請求に記録される可能性があります。
見積もりには、費用シナリオの Compute Engine VM に接続されたネットワーキングの費用は含まれません。
この見積もりでは、継続利用割引(SUD)は考慮されていません。
この見積もりには、プロモーション クレジットや Cloud Marketplace のプライベート オファーからの割引など、アカウントのクレジットを考慮していません。
この見積もりでは、Google Cloud プロダクトの料金の今後の変化を考慮していません。
費用シナリオの例
次の例は、費用を見積もる API 呼び出しを示しています。リクエストの形式の詳細については、API リファレンスをご覧ください。
API レスポンスでは、純費用の見積もりは次のオブジェクトに表示されます。
segmentTotalCostEstimate
: 期間の費用見積もり。workloadTotalCostEstimate
: ワークロードの費用見積もり。
仮想マシンを正規価格で見積もる
次の API リクエストは、正規価格で 5 台のカスタム n1 仮想マシン(VM)の 100 時間の使用量に対する費用を見積もります。
リクエスト内の usageRate
は、この費用シナリオに含まれるリソースの数を示します。
リクエストのデータを使用する前に、次のように置き換えます。
- API_KEY: Google Cloud API キー
HTTP メソッドと URL:
POST https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY
リクエストの本文(JSON):
{ "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" } } ] } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
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
その後、次のコマンドを実行して 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
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
@' { "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
そのうえで、次のコマンドを実行して REST リクエストを送信します。
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-OutFile cost-estimate.json `
-Uri "https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY"
cost-estimate.json
というファイルに保存されます。ここには、次の内容が含まれます。{ { "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" } } }
Cloud Storage の使用料金を契約価格で見積もる
次の API リクエストでは、asia-southeast2 の 500 ギビバイト(GiB) の契約価格を使用して 1 か月の費用を見積もります。
リクエストのデータを使用する前に、次のように置き換えます。
- BILLING_ACCOUNT_ID: Cloud 請求先アカウント ID。アカウントにカスタム料金契約を関連付ける必要があります。
HTTP メソッドと URL:
POST https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario
リクエストの本文(JSON):
{ "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" } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
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
その後、次のコマンドを実行して 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
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
@' { "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
そのうえで、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-OutFile cost-estimate.json `
-Uri "https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario"
cost-estimate.json
というファイルに保存されます。ここには、次の内容が含まれます。{ "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" } }
時間の経過とともに変化するワークロードの費用を見積もる
次の API リクエストでは、以下のリソースについてカスタム契約価格で 1 か月間の使用量に対する費用を見積もります。
- 7,000 GiB のストレージ
- 8 台の n2-standard-4 VM
- 14 日後に 3 台の n2-standard-4 VM を追加
このサンプルでは、estimationTimeFrameOffset
フィールドを使用して新しい時間セグメントの開始時刻を決定しています。次のスニペットに示すように、1,209,600 秒(14 日)後に VM の数が 8
から 11
(usageRate
)に変更されます。
"usageRateTimeline": {
"usageRateTimelineEntries": [
{
"usageRate": 8
},
{
"usageRate": 11,
"effectiveTime": {
"estimationTimeFrameOffset": "1209600s"
}
}
]
同様に、ワークロードの開始から 20 日後にワークロードの VM を 3 台に減らした場合の費用を見積もるには、次の例に示すように usageRateTimelineEntries
にセグメントを 1 つ追加します。
"usageRateTimeline": {
"usageRateTimelineEntries": [
{
"usageRate": 8
},
{
"usageRate": 11,
"effectiveTime": {
"estimationTimeFrameOffset": "1209600s"
}
}
{
"usageRate": 3,
"effectiveTime": {
"estimationTimeFrameOffset": "1728000s"
}
}
]
リクエストのデータを使用する前に、次のように置き換えます。
- API_KEY: Google Cloud API キー
HTTP メソッドと URL:
POST https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY
リクエストの本文(JSON):
{ "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" } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
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
その後、次のコマンドを実行して 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
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
@' { "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
そのうえで、次のコマンドを実行して REST リクエストを送信します。
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-OutFile cost-estimate.json `
-Uri "https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY"
cost-estimate.json
というファイルに保存されます。ここには、次の内容が含まれます。{ "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" } }
確約利用割引(CUD)のあるワークロードの費用を見積もる
次の例は、契約料金と 1 年間のコミットメントを使用して、1 台の a2-megagpu VM、NVIDIA Tesla A100 GPU、Extreme Persistent Disk を 5 時間(18,000 秒間)使用する場合の費用を見積もる API リクエストを示しています。
リクエストのデータを使用する前に、次のように置き換えます。
- BILLING_ACCOUNT_ID: Cloud 請求先アカウント ID。アカウントにカスタム料金契約を関連付ける必要があります。
HTTP メソッドと URL:
POST https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario
リクエストの本文(JSON):
{ "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" } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
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
その後、次のコマンドを実行して 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
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
@' { "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
そのうえで、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-OutFile cost-estimate.json `
-Uri "https://cloudbilling.googleapis.com/v1beta/billingAccounts/BILLING_ACCOUNT_ID:estimateCostScenario"
cost-estimate.json
というファイルに保存されます。ここには、次の内容が含まれます。CUD の費用削減の見積もりは、`commitmentCostEstimates` オブジェクト内で示されます。
{ "costEstimationResult": { "segmentCostEstimates": [ { "segmentStartTime": { "estimationTimeFrameOffset": "0s" }, "workloadCostEstimates": [ { "name": "Custom VM", "skuCostEstimates": [ { "sku": "services/6F81-5844-456A/skus/2922-40C5-B19F", "usageAmount": 480, "usageUnit": "h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "15", "nanos": 173280000 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-7", "nanos": -586640000 }, "creditType": "Committed Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "7", "nanos": 586640000 } } }, { "sku": "services/6F81-5844-456A/skus/2390-DCAF-DA38", "usageAmount": 6800, "usageUnit": "GiBy.h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "28", "nanos": 811600000 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-6", "nanos": -609720000 }, "creditType": "Committed Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "22", "nanos": 201880000 } } }, { "sku": "services/6F81-5844-456A/skus/039F-D0DA-4055", "usageAmount": 5, "usageUnit": "h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "14", "nanos": 669540000 }, "netCostEstimate": { "currencyCode": "USD", "units": "14", "nanos": 669540000 } } }, { "sku": "services/6F81-5844-456A/skus/165B-942F-F345", "usageAmount": 6.8493150684931505, "usageUnit": "GiBy.mo", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "nanos": 856164383 }, "netCostEstimate": { "currencyCode": "USD", "nanos": 856164383 } } }, { "sku": "services/6F81-5844-456A/skus/DCA4-F1BE-57C4", "usageAmount": 102.73972602739725, "usageUnit": "mo", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "6", "nanos": 678082191 }, "netCostEstimate": { "currencyCode": "USD", "units": "6", "nanos": 678082191 } } } ], "workloadTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "66", "nanos": 188666574 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-14", "nanos": -196360000 }, "creditType": "Committed Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "51", "nanos": 992306574 } } } ], "segmentTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "75", "nanos": 131906574 }, "creditEstimates": [ { "creditAmount": { "currencyCode": "USD", "units": "-14", "nanos": -196360000 }, "creditType": "Committed Use Discount" } ], "netCostEstimate": { "currencyCode": "USD", "units": "60", "nanos": 935546574 } }, "commitmentCostEstimates": [ { "name": "VM commitment", "skuCostEstimates": [ { "sku": "services/6F81-5844-456A/skus/3A31-931E-6360", "usageAmount": 240, "usageUnit": "h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "4", "nanos": 779600000 }, "netCostEstimate": { "currencyCode": "USD", "units": "4", "nanos": 779600000 } } }, { "sku": "services/6F81-5844-456A/skus/220C-35D0-70E0", "usageAmount": 1560, "usageUnit": "GiBy.h", "costEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "4", "nanos": 163640000 }, "netCostEstimate": { "currencyCode": "USD", "units": "4", "nanos": 163640000 } } } ], "commitmentTotalCostEstimate": { "preCreditCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 943240000 }, "netCostEstimate": { "currencyCode": "USD", "units": "8", "nanos": 943240000 } } } ] } ], "skus": [ { "sku": "services/6F81-5844-456A/skus/3A31-931E-6360", "displayName": "Commitment v1: A2 Cpu in Americas for 1 Year", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 19915000 } } ], "unit": "h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/220C-35D0-70E0", "displayName": "Commitment v1: A2 Ram in Americas for 1 Year", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 2669000 } } ], "unit": "GiBy.h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/039F-D0DA-4055", "displayName": "Nvidia Tesla A100 GPU running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "units": "2", "nanos": 933908000 } } ], "unit": "h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/165B-942F-F345", "displayName": "Extreme PD Capacity", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 125000000 } } ], "unit": "GiBy.mo", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/DCA4-F1BE-57C4", "displayName": "Extreme PD IOPS", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 65000000 } } ], "unit": "mo", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/2922-40C5-B19F", "displayName": "A2 Instance Core running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 31611000 } } ], "unit": "h", "unitCount": 1 } } ] }, { "sku": "services/6F81-5844-456A/skus/2390-DCAF-DA38", "displayName": "A2 Instance Ram running in Americas", "prices": [ { "priceType": "RATE", "rate": { "tiers": [ { "price": { "currencyCode": "USD", "nanos": 4237000 } } ], "unit": "GiBy.h", "unitCount": 1 } } ] } ], "currencyCode": "USD" } }
プレミアム ライセンスの VM の費用を正規価格で見積もる
次の例は、Windows Server 2022 DC のプレミアム ライセンスを含む 5 台のカスタム n1 仮想マシンを正規価格で 100 時間使用する場合の API リクエストを示しています。
リクエストのデータを使用する前に、次のように置き換えます。
- API_KEY: Google Cloud API キー
HTTP メソッドと URL:
POST https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY
リクエストの本文(JSON):
{ "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" } } ] } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
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
その後、次のコマンドを実行して 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
リクエスト本文を request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。
@' { "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
そのうえで、次のコマンドを実行して REST リクエストを送信します。
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-OutFile cost-estimate.json `
-Uri "https://cloudbilling.googleapis.com/v1beta:estimateCostScenario?key=API_KEY"
cost-estimate.json
というファイルに保存されます。ここには、次の内容が含まれます。{ "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" } }