【AWS TIPS】帳單的管理 by qrtt1 | CodeData
top

【AWS TIPS】帳單的管理

分享:

【AWS TIPS】在 CloudFront 提供私有內容 << 前情

Pay As You Go,你會在多數的雲端服務供應商的介紹裡看到這句台詞。使用者付費是天經地義的事,今天就來談談帳單管理的小技巧。

雲端服務與經驗談 [5] 雲服務的成本控制與優化 提到如何進行成本控制。方法簡而言之為熟悉計價規則,並檢視帳單針對不必要的使用行為進行調整,以達到降低費用的目標。這概念完全來自於一般軟體的效能調校 (Performance Tuning),不過這回調整的目標是:保持軟體效能的前提,試圖降低使用費用。

效能調校的歷程中,針對關注的目標進行 Profiling 是相當重要的。不管有沒有現成可用的工具,至少你可以用盡各種方法蒐集到數據,對數據進行解讀。

解讀的過程可以討論出許多的影響因素,同樣依效能調校的概念可以:

  1. 依影響程度由大到小排出可以改善的項目 (哪些項目最可能浪費了錢?)
  2. 將上一份清單標上改善的難易程度 (設定不良的問題為最容易改善、部分軟體元件使用資料的行為修改算中等、構架調整通常較耗時)
  3. 計劃改善的順序 (該以最容易優先或以最有效為優先呢?先試著看看有沒有改 20% 能影響 80% 的因素唄)

上述的討論皆依賴著源頭的『數據』,它可以是嚴謹的 benchmark,或是較簡易的 log file 統計結果。針對 AWS 服務來說,至少你會有帳單資訊可以看。AWS 帳單更新的速度不算快,但至少每日都會更新,並且在月初時可以看到上個月最終的結果。

預設的 AWS 帳單

初次使用 AWS 服務時需做信用卡登錄。這登錄的信用卡會成為你付款用的卡,它會被標示在帳單資訊內。只要你有使用任何 AWS 服務,都會被記錄下來並且產生費用整合至帳單內。假設我們目前有 3 個服務 A, B, C 都使用到 EC2,那麼他們的使用情形會被加總起來顯示於帳單之內。

我們無法輕易地分辨出他們各別使用了 EC2 的比例與費用。若新增一個服務 D,而在下個月的帳單發現費用增加許多,也無法證明是由服務 D 引起的。只能直覺(沒有邏輯的)懷疑,是因為 D 而導致費用增加。就像往往程式出了 Bug 最先被懷疑的是最新一批 commit 的人。

隨著公司使用 AWS 設定的服務越來越多,曾試過一些土法煉鋼的方式,解決無法判斷資源使用比例的問題。以 EC2 為例,它會分開計算不同的 Region 的費用明細(因為價錢本來就不同,也無法算在一起),我試著將服務分開在不同的 Region 內,這麼做確實能輔助我看出,不同服務使用 EC2 的時間比重。

但這並非一個好方法,新服務絕對比 Region 增加的速度快,分 Region 放服務的缺點是總有一天肯定不夠用,而我們不是只有使用 EC2 這項 AWS 服務,並且網路流出的計價是合併在一起的,這使得我們無法判斷是哪一類服務網路費用成長了。即使你可以說『合理的推測,網路也許會跟 EC2 用量成正比』,但這其實是一個不合邏輯的陳述!況且 Bug 往往發生在跟當事人想得不一樣的地方。

多帳號合併帳單

由上述的說明可知,預設帳單無法輔助我們判斷不同服務的資源使用效率。那換個角度想,一個帳單是跟著一個帳號的,申請多個帳號來使用就可以自然有不同的帳單:一個帳號即為一組服務、一份帳單。當你這麼規劃後,你的服務如何使用資源就相單清楚,而網路的使用(或其他合併計算資源)也能知道是否有費用異常變化的情況。

若你是自己在使用 AWS 服務,這麼規劃是沒什麼大問題的,除了看帳單比較麻煩之外。對於實務面來說,在公司要使用信用卡進行週期性支付都需要跑一些行政流程(好歹得讓老闆知道,你用了他的卡),經手的單位會留下一些信件記錄這事情。這不是說每當要申請新的帳號時,都要再重複這些行政流程了嗎?

AWS 有觀察到這個需求,於是它提供『多帳號合併帳單』的設定。有這項功能就可以請服務的需求單位,申請一組 AWS 帳號,管理人員再設定要替這組新帳號付款並合併帳單。當變更生效後,在主帳號會看到有原先的帳單與分帳號記錄的帳單,這不只省去了使用公司信用卡的行政流程,也方便了帳單的閱讀。

完成合併帳號的帳單示意圖如下,預設帳單,並多出 Activity by Account 的頁籤

main_billing

不同帳號(服務)的費用,可以很明確知道成本多寡,點開後即為各 AWS 服務的明細

by_account_billing

設定合併帳單

合併帳號的設定流程為:

  1. 啟用合併帳單流程:主帳號第一次使用時要設。這步驟需要審核後才能使用,主要是驗證主帳號具有付款能力。
    signUpConsolidated_billing
  2. 申請新的帳號:可以用任何能用的信用卡申請,在完成合併帳單後至 amazon.com 取消此張信用卡。
  3. 在主帳號對要合併的帳號發出請求
    1. 點選 Send Request
      request_1
    2. 填入新服務的 email 與寄件內文
      request_2
    3. 在新帳號的 mail 中,你可以找到確認信。用新帳號登入確定合併帳號即完成啟用。

完成帳單設定後,就能區別出不同服務使用的費用,也能細看各服務使用的 AWS 資源。若你的用途是以 Profiling 為目標的,那可以再配合 AWS enables Detailed Billing Reports 功能,它可會將帳單細節上傳至你指定的 S3 Bucket。檔案是 CSV 格式,你可以寫程式去製作出需要的比較圖表,或選用第三方的費用分析服務、工具。

對於帳單管理的更多細節,可以參考 AWS Account Billing 文件,也許有人使用過以 tag 區分費用,但並不是所有服務都有支援這項功能,我認為最直覺簡單的方式還是分帳號合併帳單的方法。

後續 >> 【Cloud TIPS】雲端主機與 Email 寄送

分享:
按讚!加入 CodeData Facebook 粉絲群

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

關於作者

目前在一家網路應用軟體公司擔任開發工作,對多媒體處理與雲端應用充滿興趣,工作之餘亦常整理開發經驗分享於網路或於社群活動時進行分享。

熱門論壇文章

熱門技術文章