【AWS TIPS】帳單的管理
【AWS TIPS】在 CloudFront 提供私有內容 << 前情 Pay As You Go,你會在多數的雲端服務供應商的介紹裡看到這句台詞。使用者付費是天經地義的事,今天就來談談帳單管理的小技巧。 在 雲端服務與經驗談 [5] 雲服務的成本控制與優化 提到如何進行成本控制。方法簡而言之為熟悉計價規則,並檢視帳單針對不必要的使用行為進行調整,以達到降低費用的目標。這概念完全來自於一般軟體的效能調校 (Performance Tuning),不過這回調整的目標是:保持軟體效能的前提,試圖降低使用費用。 效能調校的歷程中,針對關注的目標進行 Profiling 是相當重要的。不管有沒有現成可用的工具,至少你可以用盡各種方法蒐集到數據,對數據進行解讀。 解讀的過程可以討論出許多的影響因素,同樣依效能調校的概念可以:
上述的討論皆依賴著源頭的『數據』,它可以是嚴謹的 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 的頁籤 不同帳號(服務)的費用,可以很明確知道成本多寡,點開後即為各 AWS 服務的明細 設定合併帳單合併帳號的設定流程為:
完成帳單設定後,就能區別出不同服務使用的費用,也能細看各服務使用的 AWS 資源。若你的用途是以 Profiling 為目標的,那可以再配合 AWS enables Detailed Billing Reports 功能,它可會將帳單細節上傳至你指定的 S3 Bucket。檔案是 CSV 格式,你可以寫程式去製作出需要的比較圖表,或選用第三方的費用分析服務、工具。 對於帳單管理的更多細節,可以參考 AWS Account Billing 文件,也許有人使用過以 tag 區分費用,但並不是所有服務都有支援這項功能,我認為最直覺簡單的方式還是分帳號合併帳單的方法。 |