examlab .net 用最有效率的方法,考取最有價值的證照
本篇導覽 約 18 分鐘

管理計費與成本:GCP 中的財務治理

3,520 字 · 約 18 分鐘閱讀 ·

學習如何管理 Google Cloud 計費帳戶、設定預算與警示,以及將計費數據匯出至 BigQuery,為 ACE 考試做好準備。

立即做 20 題練習 → 免費 · 不用註冊 · ACE

理解 Google Cloud 計費與成本管理

在雲端環境中,資源的彈性雖然帶來了便利,但也可能導致意料之外的成本。對於 Associate Cloud Engineer (ACE) 來說,掌握計費管理 (Billing) 是確保專案可持續運行的關鍵技能。Google Cloud 的計費架構設計旨在提供透明度、可預測性以及細粒度的控制。

計費管理的核心在於 Cloud Billing Account。這是一個在 Google Cloud 層級定義的實體,用於支付資源的使用費用。一個計費帳戶可以連結到一個或多個專案,但一個專案在同一時間只能連結到一個計費帳戶。

白話文解釋

為了讓計費概念更接地氣,我們可以使用以下類比:

1. 房屋租賃與水電費 (房屋仲介類比)

想像你在管理一整棟公寓:

  • 計費帳戶 (Billing Account):就是你的銀行帳戶或信用卡,負責支付整棟樓的水電費。
  • 專案 (Projects):就是每一間出租的房間。
  • 預算 (Budgets):你為每間房間設定的水電費上限。如果某個房客(開發者)沒關冷氣(VM),電費飆升,系統會發簡訊(警示)提醒你。
  • 資源使用 (Resource Usage):具體用了多少度電。

即便你有好幾間房,只要它們都連結到你的同一個銀行帳戶,你就會收到一張總帳單。

2. 手機門號資費 (電話總機類比)

  • 計費帳戶:電信公司的合約持有者(可能是公司)。
  • 專案:公司發給每個員工的手機門號。
  • 計費匯出 (Billing Export):每個月詳細的通話明細,讓你知道誰打了最久的長途電話(哪項服務最花錢)。
  • 配額 (Quotas):你的合約規定每個月只能打 100 分鐘,打超過了就會被停機(保護機制)。

3. 自助餐計費 (瑞士刀類比)

  • 計費帳戶:你的錢包。
  • 資源 (Resources):自助餐台上各種菜色。有的按件計費(API 呼叫),有的按重量計費(儲存空間),有的按時間計費(VM 執行時間)。
  • 儀表板 (Dashboards):你在用餐過程中隨時查看自己盤子裡菜色的總價。

Cloud Billing 帳戶結構

在 GCP 的資源階層中,計費帳戶位於專案之上,但它可以跨越組織邊界。

計費帳戶類型

  1. 自助式 (Self-serve):使用信用卡或扣款卡,帳單金額會自動扣款。
  2. 開立發票 (Invoiced):適用於大型組織,Google 會定期寄送發票,通常有較長的付款期限。

計費相關角色

  • roles/billing.admin: 全權管理計費帳戶。
  • roles/billing.user: 允許使用者將專案連結到該計費帳戶。
  • roles/billing.viewer: 只能查看帳單資訊,不能修改。

計費帳戶是與 Google 結算費用的實體。它不屬於特定的專案,而是專案去「連結」它。 Source ↗

將專案連結到計費帳戶

專案必須連結到計費帳戶才能使用付費服務。

如果一個專案沒有連結計費帳戶,它只能使用免費層級 (Free Tier) 範圍內的資源。一旦連結,該專案產生的所有費用都會由對應的計費帳戶承擔。 Source ↗

gcloud 指令練習

# 列出可用的計費帳戶
gcloud billing accounts list

# 將專案連結到計費帳戶
gcloud billing projects link MY_PROJECT_ID --billing-account 012345-567890-ABCDEF

設定預算與電子郵件警示

預算是防止「雲端帳單驚嚇」的第一道防線。

預算運作方式

你可以針對整個計費帳戶或特定專案設定預算門檻。

  • 金額 (Amount): 可以是固定金額,或參考上個月的支出。
  • 範圍 (Scope): 選擇特定的專案、服務(如只有 Compute Engine)或標籤 (Labels)。

警示門檻 (Alert Thresholds)

標準做法是設定多個觸發點:50%、90% 和 100%。當支出達到門檻時,GCP 會發送電子郵件給計費管理員 (Billing Admins) 和計費使用者 (Billing Users)。 Source ↗

Pub/Sub 整合

對於進階自動化,你可以將預算通知發送到 Pub/Sub。例如,當預算達到 100% 時,自動觸發 Cloud Function 來關閉不重要的 VM。

配置計費數據匯出至 BigQuery

當你需要進行深度成本分析時,控制台的圖表可能不夠用。這時你需要 計費匯出 (Billing Export)

配置匯出步驟

  1. 建立 BigQuery 資料集:在同一個組織下的某個專案中建立。
  2. 啟用匯出:在計費管理介面中選擇 "Billing export",指向該資料集。
  3. 選擇類型
    • 標準使用成本 (Standard usage cost):每日詳細的使用成本。
    • 詳細使用成本 (Detailed usage cost):包含標籤 (Labels) 和資源層級的詳細資訊。
    • 定價匯出 (Pricing export):你的帳戶特有的定價資訊。

計費匯出並不具備回溯性。它只會從啟用那一刻起開始匯出資料。因此,強烈建議在專案啟動初期就啟用匯出。 Source ↗

可視化成本與使用情況

匯出到 BigQuery 後,你可以:

  • 使用 SQL 查詢特定的成本趨勢。
  • 連結 Looker Studio (前 Data Studio) 建立美觀的成本儀表板。
  • 使用 Cloud Billing 報表 在控制台中快速查看按服務或專案分類的支出。

要把專案在兩個計費帳戶之間搬移,必須同時擁有兩個角色:在目標計費帳戶上的 roles/billing.user(才能把專案接過去),以及在該專案上的 roles/billing.projectManager(Project Billing Manager,才能從來源帳戶解除連結)。光是在來源帳戶持有 roles/billing.admin 是不夠的——ACE 情境題裡「開發者無法重新連結專案」通常就是卡在這個拆開的權限設計。 Source ↗

用於成本分配的標籤 (Labels)

考試陷阱:如果你想知道「開發部門」和「生產部門」各自花了多少錢,最有效的工具是標籤 (Labels) 而非建立多個計費帳戶。 Source ↗

標籤是鍵值對 (Key-Value pairs,例如 env:proddept:marketing),可以附加在資源上,並在計費匯出中呈現,方便進行費用分攤 (Chargeback)。

成本管理的最佳實務

  1. 實施階層式預算:從組織級到專案級都設定預算。
  2. 善用承諾使用折扣 (Committed Use Discounts, CUDs):對於可預測的負載,承諾使用 1 或 3 年可獲得大幅折扣。
  3. 清理未使用的資源:定期檢查孤兒磁碟 (Orphaned Disks) 或未使用的靜態 IP。
  4. 權限最小化:不要隨便給予 billing.admin 權限。

ACE 的常見計費情境

  • 情境:某公司想要確保「行銷專案」產生的發票與「研發專案」分開。
    • 解決方案:建立兩個不同的計費帳戶,分別連結對應的專案。
  • 情境:你需要當預算達到 100% 時「自動」停止資源。
    • 解決方案:設定預算通知到 Pub/Sub,由 Cloud Function 執行 gcloud compute instances stop

常見問題 (FAQ)

問:一個專案可以連結多個計費帳戶嗎? 答:不行,一個專案在任何給定時間只能與一個計費帳戶關聯。

問:預算達到 100% 時,GCP 會自動關閉我的資源嗎? 答:預設不會。預算只會觸發通知。自動關閉需要額外透過 Pub/Sub 和代碼實現。

問:什麼是計費子帳戶 (Billing Subaccount)? 答:這通常出現在轉售商 (Reseller) 模式中,用於在大型帳戶下劃分多個子客戶。

問:我可以更改計費帳戶的幣別嗎? 答:計費帳戶建立後,幣別是不可更改的。如果需要更改幣別,必須建立新的帳戶。

問:為什麼我已經設了預算,還是收到了超額帳單? 答:預算通知有延遲(通常是幾小時),且預算不具有強制限制資源使用的能力。

ACE 總結清單

  • 掌握 roles/billing.adminroles/billing.user 的區別。
  • 知道如何將專案重新連結 (Re-link) 到不同的計費帳戶。
  • 理解計費匯出到 BigQuery 的流程。
  • 了解標籤如何協助成本分攤。
  • 記住預算警示預設不會停止資源。

官方資料來源

更多 ACE 主題