測試與部署你的 API
在 AWS 上開發應用程式
Ricardo Sueiras
Principal Technologist
開發者的 Infrastructure-as-Code
- 雲原生應用透過 Infrastructure-as-Code(IaC)部署。
- 在組態檔中定義雲端資源。
- 避免在 AWS Management Console 手動操作(clickops)。
AWS CloudFormation
- AWS 中基礎的 IaC 服務。
- 以 YAML 或 JSON 範本定義 AWS 資源。
AWS Cloud Development Kit(CDK)
- CDK 用程式碼定義 IaC。
- 以 Python、TypeScript 或 Java 撰寫,取代 YAML 或 JSON。
- 應用在部署時轉譯為 CloudFormation 範本。
AWS Serverless Application Model(SAM)
- 擴充 CloudFormation。
- 為無伺服器資源與 API 提供精簡語法。
- 充當轉換層。
- 將 SAM 語法轉成完整的 CloudFormation 範本。
SAM 功能
- 自動產生最小權限的 IAM 角色,並可微調。
- 以組態定義你的部署管線。
- 使用
sam build 和 sam deploy 封裝並部署。
- 以
sam validate 及早攔截範本錯誤。
- 用
sam local start-lambda 在本機模擬 Lambda。
使用 SAM 測試
- 在部署前於本機建置、呼叫並測試無伺服器應用。
- 測試 Lambda 函式與 API Gateway 整合。
- 用
sam local invoke 在本機呼叫函式。
- 用
sam local start-api 模擬 API Gateway。
單元測試
- 結合 SAM 與單元測試驗證 Lambda 行為。
- 本機測試可加速開發循環。
- 搭配
pytest、JUnit 或 Jest 等框架。
測試流程
- 用
sam local generate-event 產生測試事件。
- 會輸出 JSON 事件檔。
- 用
sam local invoke FunctionName -e event.json 在本機呼叫。
- 在部署前加入框架斷言驗證回應。
模擬 AWS 服務
- 將本機測試與
moto 等模擬函式庫結合。
- 與模擬的 AWS 服務互動,無需實際呼叫。
- 提升測試速度。
- 降低測試成本。
- 驗證節流或失敗等錯誤情境。
持續整合與持續部署(CI/CD)
- SAM 應用常透過 CI/CD 管線部署。
- 自動化建置、測試、封裝與部署。
- 用 AWS CodeCommit 儲存程式碼與 SAM 範本。
- 用 AWS CodeBuild 執行測試與
sam build。
- 由 AWS CodePipeline 編排流程。
CI/CD 流程
- 將原始碼與 SAM 範本提交到版本庫。
- 執行自動化測試與驗證。
- 用
sam build 封裝應用。
- 用
sam deploy 部署資源。
- 部署後以 CloudWatch 監控。
部署疑難排解
- 疑難排解是關鍵的營運技能。
- 常見的部署失敗:
- IAM 權限問題。
- 無效的 SAM 或 CloudFormation 範本。
- Lambda 封裝失敗或缺少相依項。
- API Gateway 設定錯誤。
部署疑難排解
- SAM 部署底層由 CloudFormation 執行。
- 提供堆疊事件與自動回滾。
- 協助識別部署失敗。
- 回滾以還原先前的環境狀態。
部署疑難排解
- 使用下列方式進行疑難排解:
- CloudWatch Logs。
- API Gateway 執行記錄。
- Lambda 記錄。
- CloudWatch 指標。
Preparing Video For Download...