💡 先搞懂問題
虛構公司「晴空食品」導入 Google Cloud 半年,帳單一直讓財務部頭痛。三個團隊各開了好幾個專案,全部連到同一個帳單帳戶,月底只看到一個總數,分不出是誰花的。資訊室主管設過一個「每月預算」,以為花到上限就會自動停,結果某位工程師週五測試完忘了刪掉一台掛 GPU 的 VM,週一上班才發現多了一筆大費用,預算快訊信件躺在一位已經調職的同事信箱裡。另一邊,訂單系統的幾台 VM 一年到頭都在跑,卻一直用隨選價;每晚的報表批次可以重跑,也是用一般 VM。
新手在這裡最常卡住的有三件事。第一,把「預算」當成「上限」:Google Cloud 官方文件明講,只發快訊的預算不會自動限制用量或花費。第二,不知道錢的流向和權限是兩棵樹:專案連結到 Cloud Billing 帳戶(Cloud Billing account)付款,但能不能看帳單、能不能把專案掛上去,靠的是帳單角色,不是專案上的 Owner 或 Editor。第三,面對一堆折扣名詞分不清:持續使用折扣(sustained use discount,SUD)是自動的,承諾使用折扣(committed use discount,CUD)要先承諾,Spot VM 便宜但可能被收回,三者能不能疊加、適合什麼工作負載都不一樣。
這一頁要解決的就是這三件事:錢怎麼付(帳單帳戶與專案的連結),花多少怎麼盯(預算與快訊(budgets and budget alerts)、報表、帳單匯出、配額),以及怎麼買比較省(SUD、CUD、Spot VM 與 Recommender 的建議)。
生活比喻:手機門號與家庭帳單
想像一個家庭有一個付費帳戶,爸爸、媽媽、小孩各有一支門號,所有門號的費用都記到這個付費帳戶,月底一張帳單、一次付清。誰可以把新門號掛到家庭帳戶、誰可以看明細,是電信公司帳戶上的授權,跟你能不能用某支手機是兩回事。電信公司會在用量到一半、到九成時傳簡訊提醒,但簡訊不會替你停話,超量照樣計費;想要「超過就自動停」,得自己另外設定。
省錢的方法也有三種。綁約兩年換優惠費率,代價是不管這個月用多少,月租都照付;有些方案則是當月用得多就自動打折,不用綁約,但只限某些資費;還有一種閒置空機的特價機,便宜很多,可是電信公司需要時會直接收回,只適合不怕被打斷的用途。
比喻和實際有幾個落差。第一,電信公司的「家庭帳戶」通常就是全部門號的管理者;Google Cloud 的帳單帳戶和資源階層是兩棵獨立的樹,一個帳單帳戶甚至可以替不同機構的專案付費,權限要分別給。第二,綁約手機可以付違約金解約,CUD 則是承諾期間每月都要付承諾的費用,買之前要確定用量。第三,電信的自動折扣通常所有門號都適用;SUD 只適用官方清單上的機器系列,而且已經被 CUD 涵蓋的用量、Spot VM 都不會再套 SUD。
🎮 互動實驗室一:折扣計算器
左邊輸入一個月的 VM 用量:全天都在跑的基載有幾台、浮動的工作有幾台、浮動工作一個月開多少比例的時間、能不能被中斷,再選機器系列與承諾涵蓋幾台。右邊會用「示意單價」算出六種買法的每月成本,點任一列可以看逐步計算,以及承諾用不完時浪費了多少。「情境變化」可以模擬年中整套搬到另一個 Region,看哪些折扣會跟著失效。上方五個按鈕會載入預設情境。
一個月的用量
每月示意成本(點)
🎮 互動實驗室二:成本工具分類配對
上方每張卡是一個成本管理需求。先點一張卡,再點下方對應的工具;電腦上也可以直接把卡片拖進去。分對了,卡片會留在那一格並說明理由;分錯了,會告訴你那個工具為什麼不是最好的選擇。分辨的關鍵是時間點與動作:上線前估價、事後看趨勢、到門檻通知、要原始明細、要省錢建議、要分攤依據,還是要直接限制數量。
🛠️ 操作教學:連結帳單帳戶並建立預算
情境:晴空食品要替正式環境專案設一個每月預算,花到 50%、90% 時寄信,預測整月會超過 100% 時提前通知,並把預算狀態推到 Pub/Sub 主題,留給之後的自動化程式使用。左邊是簡化的控制台,照步驟填欄位、按「下一步」;右邊的 gcloud CLI 與 Terraform 會跟著你填的專案 ID、預算名稱、金額、門檻與主題即時更新,目前步驟對應的那幾行會用底色標出來。可以故意把預算名稱打超過 60 個字、把門檻填成 0,或把主題名稱以 goog 開頭,看看驗證訊息。金額是示意數字,不代表任何實際費用。
預算只會通知,不會自動封頂
這是最常見的誤解。官方文件原文寫著:只發快訊(alerts-only)的預算,不會自動限制 Google Cloud 或 Google Maps Platform 的用量或花費。達到門檻時,預設只寄電子郵件給帳單帳戶管理員與使用者,也可以連結最多 5 個 Cloud Monitoring 通知管道;資源照常運作、照常計費。要自動處理,就像上面第 6 步那樣把預算連結到 Pub/Sub 主題,預算會一天多次推送狀態,再由 Cloud Run functions 之類的程式判斷,例如超過 100% 時透過 Cloud Billing API 把專案的帳單停用。官方範例同時警告:停用帳單會終止專案裡所有服務(包含 Free Tier),資源可能被刪除而無法復原;費用產生到通知送達之間有延遲,所以這樣做也不保證不會超出預算;已鎖定到某個帳單帳戶的專案則不能停用帳單。比較溫和的做法是只關掉特定資源,或先通知人處理。另外,Google Cloud 有支援特定服務的 spend cap 預算,達到目標時暫停指定服務、要手動解除,只適用符合資格的服務。
自己動手時要注意
權限:在帳單帳戶建立預算,需要帳單帳戶上的 Billing Account Administrator(roles/billing.admin)或 Billing Account Costs Manager(roles/billing.costsManager);要連結 Pub/Sub 主題,還要在主題所在的專案有 Pub/Sub Admin 一類的權限。把專案連結到帳單帳戶,需要帳單帳戶上的 Billing Account User 一類角色,加上專案上能變更帳單設定的權限(例如 Project Billing Manager 或 Owner)。只有專案 Owner、沒有任何帳單角色的人,看不到帳單帳戶層級的預算,也不能把專案改連到別的帳單帳戶,這是正常的:帳單權限和專案權限是兩棵樹。
API:用 gcloud 或 Terraform 管理預算前,要在呼叫 API 的專案啟用 Cloud Billing Budget API(billingbudgets.googleapis.com),用到 Pub/Sub 就再啟用 pubsub.googleapis.com;官方建議用一個獨立的 FinOps 或帳單管理專案來呼叫這些 API,那個專案本身也要啟用帳單。
費用:建立預算與快訊不會產生計費資源;Pub/Sub 主題依訊息量計費,預算通知的量很小,但仍屬於付費服務的用量。新客戶的 Free Trial 有 300 美元抵用金、90 天,試用期間不會自動收費;Free Tier 每月有固定免費額度,而且有 Region 限制,例如 e2-micro 只限 us-west1、us-central1、us-east1,台灣的 asia-east1 不在內(查證日期 2026-10-08)。練習時先設一個小額預算,是好習慣。
清理:練習用的預算與主題可以刪除;用 Terraform 建立的,terraform destroy 會刪除它建立的預算與主題;範例裡管帳單連結的 google_billing_project_info 刻意設成 deletion_policy = "ABANDON",destroy 時只把它移出 Terraform 管理,不會去動專案的帳單連結,避免練習完順手把正式專案的付費服務停掉。整個練習專案都不要了,最乾淨的是直接刪除專案,30 天內還可以還原。
# 列出預算,找到要刪的預算 ID 後刪除
gcloud billing budgets list --billing-account=000000-AAAAAA-BBBBBB
gcloud billing budgets delete BUDGET_ID --billing-account=000000-AAAAAA-BBBBBB
# 用 Terraform 建立的資源
terraform destroy
# 整個練習專案都不要了:最乾淨
gcloud projects delete my-project-id
不要寫進範例的東西:本頁的帳單帳戶 ID 用 000000-AAAAAA-BBBBBB 這種明顯的佔位,專案 ID 用 my-project-id,信箱用保留給範例的 example.com。真實的帳單帳戶 ID、付款資料與同事信箱不要貼進公開的儲存庫或教學文件;自動化程式用附加到 Cloud Run 的服務帳戶執行,不要下載服務帳戶金鑰。預算通知的收件者盡量用群組信箱或通知管道,人員異動時才不會像晴空食品那樣漏信。
📘 原理補完
Cloud Billing 帳戶:誰付錢、誰能看
Cloud Billing 帳戶定義「誰付錢、怎麼付」,追蹤所有連結到它的專案的費用。專案沒有連結帳單帳戶時,連免費的服務也無法使用;一個帳單帳戶可以替很多專案付費。帳單帳戶分自助式(self-serve,線上用信用卡或金融卡付款,試用帳戶也屬此類)與月結發票(invoiced)兩種;SUD 只適用自助式(Online)帳單帳戶。管理上靠的是帳單角色:Billing Account Administrator 管整個帳單帳戶,Billing Account User 能把專案連結過來,Billing Account Costs Manager 能管預算與看費用,這些角色和專案上的 Owner、Editor 是分開授予的。
預算怎麼設:範圍、金額、門檻、通知
預算建在帳單帳戶上,範圍可以是整個帳單帳戶,或篩選到特定的機構與資料夾、專案、服務、子帳戶,也能用單一標籤篩選;時間範圍可以是每月、每季、每年或自訂期間。金額可以填固定值,也可以用「上個期間的花費」自動帶入。門檻規則以預算金額的百分比表示,預設是 50%、90%、100%,依實際花費觸發;也可以改成依預測花費(Forecasted)觸發,在月中就預警整月會超支,但自訂期間的預算不能用預測門檻。抵免(官方介面叫 Savings,包含促銷與免費方案抵用金)可以選擇要不要算進花費。一個帳單帳戶最多 50,000 個預算(查證於 2026 年 10 月)。另外,報表上的「實際花費」會因為回報延遲、抵免與稅金,和最後的帳單有落差。
三種折扣與 Spot VM:你承諾什麼,換到什麼
持續使用折扣(SUD)是 Compute Engine 自動套用的折扣:資源在一個計費月內用超過 25% 的時間才開始打折,用得越久折扣越多。官方查證的上限是兩級:N1 預先定義與自訂機型、M1 與 M2、f1-micro 與 g1-small,以及掛在 N1 上的 GPU,最高淨折扣 30%;N2、N2D、C2 系列(含對應的單一用戶節點)最高 20%;不在清單上的系列(例如 E2)沒有 SUD。SUD 只適用 Compute Engine 與 GKE 建立的 VM,App Engine 與 Dataflow 的 VM 不適用;已經被 CUD 涵蓋的用量不會再套 SUD,加速器最佳化機型上的 GPU 也不適用。
承諾使用折扣(CUD)是「先承諾、後打折」,承諾期間每個月都要付承諾的費用。資源型(resource-based)CUD 只用於 Compute Engine,承諾某個 Region 的 vCPU、記憶體、GPU、Local SSD、單一用戶節點或作業系統授權數量,官方寫最長可到 6 年;它綁在購買的專案,可以設定在同一個帳單帳戶的專案之間共用。支出型(spend-based)CUD 承諾每小時(或 Flexible Savings Plans 的每月)最低花費,期限 1 年或 3 年,在帳單帳戶層級購買、跨所有 Region;其中 Compute flexible CUD 一份承諾涵蓋 Compute Engine、GKE、Cloud Run,Flexible Savings Plans 可以跨產品,還有 Cloud SQL、Spanner、BigQuery、AlloyDB 等服務專屬的支出型 CUD。官方沒有統一的最高折扣百分比,依產品與期限而定。
Spot VM 使用 Google 暫時用不到的容量,官方寫最高比隨選便宜 91%,代價是 Compute Engine 隨時可能收回(preemption),依設定停止或刪除 VM。它是舊式搶占式 VM(preemptible VM)的新版本:搶占式 VM 最多跑 24 小時,Spot VM 沒有上限。Spot VM 不在 Compute Engine SLA 範圍內,也不適用 SUD 與 CUD,適合能從檢查點重跑的批次、容錯的無狀態服務(查證日期 2026-10-08)。
| 買法 | 要承諾什麼 | 適用範圍 | 主要風險或限制 | 適合的工作負載 |
|---|---|---|---|---|
| 隨選 | 無 | 所有服務 | 單價最高 | 短期、無法預測、剛上線還在觀察 |
| 隨選+SUD | 無,自動套用 | 清單上的 Compute Engine 系列(N1、N2、N2D、C2 等) | 新世代系列多半不適用;最高 30% 或 20% | 長時間運作但不敢承諾的 VM |
| 資源型 CUD | 某 Region 的 vCPU、記憶體等數量,最長 6 年 | Compute Engine | 綁 Region 與資源類型;沒用完照付 | 機型與 Region 都很確定的穩定基載 |
| 支出型 CUD | 每小時(或每月)最低花費,1 或 3 年 | 帳單帳戶層級、跨 Region;Compute flexible 涵蓋 Compute Engine、GKE、Cloud Run | 沒用完照付;折扣依產品而定 | 機型會換、會跨服務或跨 Region 的穩定用量 |
| Spot VM | 無 | Compute Engine(含 GPU、TPU、本機 SSD)、GKE 節點 | 隨時可能被收回;不受 SLA 保障 | 可中斷、可重跑的批次與容錯服務 |
成本工具地圖:估、盯、看、分、省、限
成本管理的工具依時間點分工。上線前用 Pricing Calculator 依假設的規格與用量估價;上線後用預算與快訊盯門檻;看過去的趨勢、依專案或服務分組,用 Cloud Billing 報表;要逐資源、逐 SKU 的明細並用 SQL 分析,把帳單匯出到 BigQuery(資料集在 US 或 EU 多區域時,首次啟用會回補當月與上個月的資料,單一 Region 的資料集不回補,所以要盡早啟用);要依部門或專案分攤,先替資源加上標籤(label),報表與匯出才能依標籤篩選;要找出閒置 VM、閒置磁碟、規格過大的機器或該買多少 CUD,看 Recommender(Active Assist 的一部分);要直接限制「最多能開多少」或「每分鐘能呼叫幾次」,用配額(quota),它和預算最大的差別是:達到配額,請求會直接失敗。
判斷步驟:先選買法,再選工具
- 先把用量拆成三層:一直都在的基載、白天或旺季才有的浮動、可以中斷重跑的批次。
- 基載很穩、機型與 Region 確定:資源型 CUD;機型會換、要跨 GKE 或 Cloud Run、可能換 Region:支出型的 Compute flexible CUD。承諾量抓基載就好,不要抓到尖峰。
- 不敢承諾、但 VM 長時間運作:確認機型在 SUD 清單上,SUD 會自動生效;不在清單上的新系列,要評估改用 CUD。
- 可中斷、可重跑的批次:Spot VM,搭配代管執行個體群組或 GKE 節點集區處理收回。
- 花費要盯:建立預算,至少一條依預測的 100% 規則,收件者用群組或通知管道;要自動處理就接 Pub/Sub。
- 要分攤與分析:先規劃標籤,盡早啟用帳單匯出到 BigQuery;定期看 Recommender 的閒置資源與 CUD 建議。
容易考錯的地方
預算不是上限:題目描述「設了預算還是超支」,正解通常是「預算預設只通知,要自動化得透過 Pub/Sub 與程式」,或是改用配額限制資源數量。選項寫「預算到 100% 會自動停用專案」是錯的。
SUD 和 CUD 不疊加:被 CUD 涵蓋的用量不會再套 SUD;Spot VM 用 Spot 價格,也不套 SUD 與 CUD。SUD 只限清單上的系列,不要以為所有 VM 都有。
資源型和支出型 CUD 的範圍:資源型只用於 Compute Engine、綁 Region 與購買的專案(可設共用);支出型在帳單帳戶層級、跨 Region。題目說「機型會換」「要涵蓋 GKE 與 Cloud Run」,答 Compute flexible CUD。
Spot VM 和搶占式 VM:舊教材與舊題目常用 preemptible VM 這個名字,它最多跑 24 小時;新設計用 Spot VM,沒有最長執行時間。兩者都不在 SLA 範圍內。
帳單權限和專案權限分開:「專案 Owner 看不到帳單」「財務人員要看所有專案的費用但不能動資源」這類題目,答案是授予適當的帳單角色(例如 Billing Account Viewer 或 Costs Manager),而不是專案的 Viewer 或 Owner。
估價和明細別搞混:Pricing Calculator 是假設情境的估價,不連你的實際用量;要分析真實花費,看 Cloud Billing 報表或帳單匯出到 BigQuery。
這些內容在 CDL 的 Scaling with Google Cloud Operations 領域(配額、預算、帳單報表、Spot VMs)、ACE 的 Setting up a cloud solution environment 領域(建立帳單帳戶並連結專案、預算與快訊、帳單匯出)都有點名;PCDOE 的 Optimizing performance and cost 領域則考承諾使用與持續使用折扣、Spot VMs 與 recommenders。
✅ 自我檢測
以下 6 題都是原創題,選完會立即顯示對錯與解析,全部作答後會出現總分。目前得分:0 / 6