使用 AWS Organizations 為各專案設置子帳號,並集中管理帳單和成本

使用 AWS Organizations 為各專案設置子帳號,並集中管理帳單和成本
Sep 12, 2023

min read

  • 已複製網址

使用 AWS Organizations 為各專案設置子帳號,並集中管理帳單和成本

前言#

近期遇到非常多客戶要求使用AWS來架設網站,以往公司在管理AWS架站的客戶時,並沒有統一的管理帳號, 除了需要申請很多組信箱來為客戶架設網站,工程師要進行專案維護時,也需要翻閱各式文件來確認架設的規格/權限等等, 每一期的帳單,也要另外花費人力來區分客戶別才能進行請款的動作,為了解決長期的痛點,研究了很久終於找到可以同時解決上述問題的辦法: AWS Organizations

痛點分析#

痛點一:要為每一個客戶建立獨立的email信箱,並用此信箱建立全新的AWS Root Account

嚴格說起來,這並不算是痛點,應該是工作流程的問題,基於方便客戶的原則,都是由公司協助建立信箱, 但客戶的AWS Root Account應該是由客戶來提供,而非公司建立,以下是改由客戶提供的幾個明顯好處:

  1. 減少公司mail數量,綁公司的mail會佔用公司資源,且該信箱往往只會用在建立帳號,完全沒有其他用處
  2. 方便識別客戶,客戶提供的信箱幾乎都是來自公司網域,會有公司的域名,不管是在帳號管理、帳單上,都比較容易識別出客戶
  3. 該組帳號最終會交由客戶保管與維護,信箱是客戶提供的比較不會產生問題

痛點二:沒有統一管理的主帳號,維護麻煩

因為所有客戶都是獨立的帳號建立出來的,所以每當有維護、新增功能發生時, 工程師都要先確認客戶別,找出對應的帳號密碼,登入後再開始研究應該如何進行後續的維護。

同時,因為沒有統一管理的主帳號,每當要跟客戶請主機款項的時候,都需要逐一登入後, 下載帳單然後依照客戶別來請款。(這個真的浪費很多時間欸,尤其數量很多的時候)


痛點三:帳務分散

跟上面類似,因為所有客戶都是單獨的帳號,導致扣款時間不一樣,出賬的日期也不同,帳務過度分散請款上容易出錯,或是忘記該請款了。

前置作業#

在開始之前,請先確保已經建立好一組總管理帳號,之後這組帳號將會用來管理所有客戶的網站以及帳務資訊。 此帳號需要加入信用卡資訊,用於所有組織內客戶的每月帳單扣款。

How-to#

首先請客戶提供一組email,條件如下:

  • 全新的Email(不跟其他信件混在一起)
  • 需要可以收驗證信(加入組織後,AWS會寄驗證信件到該信箱)
  • (建議)不要綁員工(該信箱不可被移除/修改)
  • (建議)使用公司網域建立

接下來使用客戶提供的信箱,註冊AWS並建立密碼(於專案驗收後可讓客戶進行修改)

帳號建立完成後,該組mail將是客戶的Root Account,可以再依照需求建立IAM 拆分權限管理

再來,登入公司的主帳號(總管理帳號) -> AWS Organizations > AWS accounts > Invitations,輸入客戶信箱,送出後請客戶收驗證信

邀請畫面

邀請畫面

送出邀請後,需要請客戶協助收信,並點擊驗證後加入組織。

由AWS寄出的驗證信件

由AWS寄出的驗證信件

信中會列出邀請者,確認無誤後,點擊Accept invitation,即加入組織。

組織清單

組織清單

驗證完成後,返回清單處就會列出剛剛驗證過的客戶以及所有客戶清單,同時包含組織者(manager@your-company.com)

確認客戶信箱已經加入組織後,即可使用該客戶信箱登入AWS並且開始建立所需要的服務了。

這邊有2點比較重要的:

  1. 只要該客戶的Mail,沒有退出組織的一天,所有的費用都會統一由總管理帳號支付。
  2. 如該客戶需要退出組織,必須要先在該客戶的AWS帳號中,設定付款資訊,否則會無法退出組織。(不然AWS 收不到錢了)

最後,每個月的帳單都會被分開計價,方便請款,

帳單依帳號拆分

帳單依帳號拆分

客戶如果希望可以看到自己每月的帳單金額,也完全沒問題,登入客戶的AWS後,該客戶就可以查詢到自己的帳單金額, 其餘客戶的帳單金額,是沒辦法看到的。

結語#

AWS Organizations可以玩的東西其實還很多,但因為解決了最主要的痛點之後就先放置了, 此外,AWS Organizations是免費的服務,所以不用擔心啟用之後會被收取額外的費用。