CodeDeploy 基礎與 appspec.yml

在 AWS 上自動化部署

Dunieski Otano

Amazon Web Services Solutions Architect

CodeDeploy 能做什麼

流程

  • 將程式碼發佈到 EC2、Lambda 或 ECS
  • 從 S3、GitHub 或 Bitbucket 取得建置產物
  • 透過生命週期事件執行你的部署腳本
  • 發生錯誤時自動回滾
在 AWS 上自動化部署

CodeDeploy 核心元件

流程

  • Application:用來分組部署的名稱
  • Deployment group:哪些目標會接收發佈
  • Deployment configuration:發佈方式(分批執行個體或流量切換)
  • Revision:要部署的產物封包
在 AWS 上自動化部署

認識 appspec.yml

appspec

  • 位於修訂版根目錄的 YAML 檔
  • 頂端需有 version: 0.0os: linux
  • 告訴 CodeDeploy 檔案要放在哪裡
  • 告訴 CodeDeploy 要執行什麼、何時執行
在 AWS 上自動化部署

EC2 的生命週期事件

  • 你撰寫:ApplicationStop、BeforeInstall、AfterInstall
  • 你撰寫:ApplicationStart、ValidateService
  • 系統執行:DownloadBundle、Install
  • 每個 hook 都是在執行個體上的 shell 或 PowerShell 腳本

圖示

在 AWS 上自動化部署

Lambda 的生命週期事件

  • Lambda 只有兩個 hook:BeforeAllowTraffic、AfterAllowTraffic
  • hook 是 Lambda 函式,不是 shell 腳本
  • CodeDeploy 會將別名切換到新版本
  • 無需登入執行個體;也不需複製檔案

比較

在 AWS 上自動化部署

EC2 的實際 appspec.yml 範例

  • 頂端包含 version: 0.0os: linux
  • files:將 app.zip 內容複製到 /var/www/app
  • BeforeInstall、AfterInstall、ApplicationStart:生命週期腳本
  • ValidateService:smoke test 確認成功

zip

在 AWS 上自動化部署

一起來練習吧!

在 AWS 上自動化部署

Preparing Video For Download...