管理環境與核准版本

在 AWS 上自動化部署

Dunieski Otano

Amazon Web Services Solutions Architect

相同程式碼,三個環境

相同程式碼

  • 將 Lambda 版本從 staging 提升到 prod
  • 相同產物,無需重建
  • 一次 API 呼叫更新 prod 別名;程式碼不變
  • 這就是「一次建置,多次部署」
在 AWS 上自動化部署

各服務的核准版本

版本

  • Lambda:別名指向函式版本
  • ECR + ECS:映像標籤與作業定義修訂版
  • API Gateway:階段與部署
  • S3:啟用版本控管的儲存貯體有物件版本
在 AWS 上自動化部署

Lambda 別名的運作方式

3 個版本

  • 版本是函式的不可變快照
  • 別名是指向版本的命名指標
  • 更新別名即可提升某個版本
  • 別名支援金絲雀釋出的加權路由
在 AWS 上自動化部署

ECR 標籤與 ECS 作業定義

  • ECR 映像依摘要不可變
  • 標籤是可移動於摘要上的標記
  • ECS 作業定義參照 image:tag@digest
  • 生產環境請以摘要鎖定,確保位元完全一致

ecr

在 AWS 上自動化部署

API Gateway 階段速覽

  • 階段是API 的一次部署
  • 每個階段有自己的 URL 與部署歷程
  • 透過部署 API 到下一個階段來提升
  • 階段變數保存各環境的執行時數值

api-2

在 AWS 上自動化部署

提升版本

  • 產物只建置一次
  • 先在 dev,再在 staging 驗證
  • 更新 prod 別名或標籤,不重建
  • 同一產物在所有環境執行

提升

在 AWS 上自動化部署

設定與程式碼分離

分離

  • 各環境程式碼一致
  • 設定 承載 dev 與 prod 的差異
  • 階段變數、環境變數、Parameter StoreSecrets Manager
  • 不要在產物中硬編環境數值
在 AWS 上自動化部署

一起來練習吧!

在 AWS 上自動化部署

Preparing Video For Download...