大型AWS環境控管神器 | AWS Service Catalog (下) | 打包篇

前言

根據大型AWS環境控管神器 | AWS Service Catalog (上)集的說明[4],我們知道自助式的Service Catalog product/portfolio建立VPC資源,因為Service Catalog 的封裝與版控有助於企業滿足合規[3]與集中之需求,此篇實作如何封裝更多的AWS資源

我們設定一個情境是Game App 所需的環境,Developer 要有S3 bucket website來測試它的App。接下來的步驟是圖1所示步驟,為組織內的最終使用者(user)建立自訂的產品組合(portfolio)

Untitled.png

前置作業:

  • 要建立這包portfolio,首先是要有Service Catalog 完整的權限
  • 故我們需切換至Service Catalog IT管理員

步驟:

  • step1: administrator先撰寫好template, 包含parameter
  • step2: administrator 將選入aws services
  • step3: 建立portfolio,將aws products 帶入portfolio
  • step4: administrator設定IAM Role並加到products動作之中
  • step5. 最終使用者即可以享受打包後的aws 資源

▌1. 實際操作

step1. 以管理員身份登入

實驗開始前先準備二個User

  • 第一個被控管的名為ServiceCatalogUser 等於是最終使用者

    • 這個帳號沒有權力建立VPC資源,
  • 第二個是IT管理員superuser

    • 有能力建立AWS Service Catalog products, portfolio

    • 因為要建立這包portfolio,首先是要有Service Catalog 完整的權限

      Untitled1.png

step2. Portfolio | 封裝自助包

  • 進入aws Service Catalog之後,點選Portfolio

  • 一樣可以看到上集文件的 Network Provisioning,但我們這次要建立新的Portfolio,裡面要封裝Game App所需的環境 eg. S3 bucket website

  • 點選Create portfolio

    Untitled2.png

step3. Portfolio設定

  • 命名 Portfolio name: Game Applications

  • 自助包說明 Portfolio description: 此自助包是為Game App部署所需

  • 所署人 Owner: Game Development Team

    Untitled3.png

Portfolio 建立完成

Untitled4.png

step4. 第二 Service Catalog | Products

  • Portfolio可以想像是一個箱子,當工程師出門時,一定要帶著他的工具箱,裡頭要放什麼工具和設備都需事前先準備

  • 透過建立Product(工具) 將其置入於 Portfolio (箱子)

  • 以下我們將建立二個products 分別為AstrayRadius

    Untitled5.png

▌2. 服務準備 | Product

step1. Create product#1

  • 進入Product頁面之後,輸入以下必要資訊
  • Product name: Astray
  • Owner: Game Development Team
  • 上傳Template: 資源包括 S3, Lambda

Untitled6.png

建立完成done

Untitled7.png

step2. Create product#2

  • 進入Product頁面之後,輸入以下必要資訊

  • Product name: Radius

  • Owner: Game Development Team

  • 上傳Template: Template 資源包括 S3, Lambda, 以及trigger 條件設定

    Untitled8.png

done

Untitled9.png

step3. 把Products 加入至Portfolio

  • 回到portfolio頁面之下,以add product 方式加入剛才建立的AstrayRadius

    Untitled10.png

step4. *Astray 加入至 *Game Applications

Untitled11.png

step5. *Radius 加入至 *Game Applications

Untitled12.png

step6. 檢視全Products是否在Portfolio之中

Untitled13.png

▌3. 測試User 發行Portfolio

設定完product, portfolio之後,ServiceCatalogUser還缺一個步驟來完成部署aws的服務,這個東西就是IAM Role,因此portfolio之中的constraints[2]設定是讓ServiceCatalogUser取得特定的IAM Role ,使product順利發行

step1. Create Constraint in Portfolio

  • 於Portfolio之中,有個Constraints的設定,目的在於設定給ServiceCatalogUser

    Untitled14.png

step2. 讓指定的IAM Role,能夠使用Astray product

  • 目的讓指定的IAM Role,能夠使用Astray product

  • IAM Role ARN: arn:aws:iam::xxxxx:role/LaunchRole

  • 完畢建立Create

    Untitled15.png

設定完launch所需要的Role

Untitled16.png

▌4. 授權給ServiceCatalogUser

最後一動,把權限指給Service CatalogUser

step1. Role設定

  • 一樣在Service Catalog內操作,請切至Group, roles, and users (不用換到IAM)

    Untitled17.png

step2. Add access

  • 選擇ServiceCatalogUser(一般受管的user) 授權給它

    Untitled18.png

step3. 完成授權

  • 確認授權

    Untitled19.png

▌5. 發行服務測試

  • 此時,注意要切換身份至ServiceCatalogUser(一般受管的user,或稱最終使用者)

    Untitled20.png

step1. 看到2個新建的Products

  • 走到Products頁面之中,就可以看到剛剛管理角度分派的2products: Radius, Astray

    Untitled21.png

step2. Launch Astray product | 發行服務

  • 這邊記得要帶 IAM Role ARN

  • 因為在Template之中,有採用Lambda,故需要Role來完成滿足部署權限

    Untitled22.png

部署中

  • 圖中可以看到右下status 灰字CREATE_IN_PROGRESS,代表目前正部署中

    Untitled23.png

step3. 成功部署的Radius Game 一起來大戰一場吧

  • 取得Output value URL,進行遊戲測試吧!

    Untitled24.png

step4. 戲戲測試

  • Developer雖然沒有實現AWS各種Resource權限,但透過ServiceCatelog一樣可以完全環境的部署,且滿足集中化與合規

    Untitled25.png

結論

AWS Service Catalog 是針對需要集中化政策的組織、IT 團隊和受管服務提供者 (MSP) 所開發。它讓 IT 管理員可以發佈和管理 AWS 資源與服務。對於大型組織,它可以提供數以千計使用者佈建雲端資源的標準方法,以確保符合企業標準

同時也適合小型團隊,團隊中的一線開發管理員可以提供和維護一致的標準開發/測試環境,當然除了Microservice獲得App runtime校準之後,Cloud層面的一致性也同樣不能被忽略。


References

[1] https://aws.amazon.com/tw/servicecatalog/

[2] https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-launch.html

[3] https://docs.aws.amazon.com/servicecatalog/latest/adminguide/service-catalog-compliance.html

[4] https://joehuang-pop.github.io/2022/04/10/%E5%A4%A7%E5%9E%8BAWS%E7%92%B0%E5%A2%83%E6%8E%A7%E7%AE%A1%E7%A5%9E%E5%99%A8-AWS-Service-Catalog-%E4%B8%8A/

大型AWS環境控管神器 | AWS Service Catalog (下) | 打包篇