測試與部署你的 API

在 AWS 上開發應用程式

Ricardo Sueiras

Principal Technologist

開發者的 Infrastructure-as-Code

 

iac

  • 雲原生應用透過 Infrastructure-as-Code(IaC)部署。
  • 在組態檔中定義雲端資源。
  • 避免在 AWS Management Console 手動操作(clickops)。
在 AWS 上開發應用程式

AWS CloudFormation

 

cloudformation

  • AWS 中基礎的 IaC 服務。
  • 以 YAML 或 JSON 範本定義 AWS 資源。
在 AWS 上開發應用程式

AWS Cloud Development Kit(CDK)

 

cdk

  • CDK 用程式碼定義 IaC。
  • 以 Python、TypeScript 或 Java 撰寫,取代 YAML 或 JSON。
  • 應用在部署時轉譯為 CloudFormation 範本。
在 AWS 上開發應用程式

AWS Serverless Application Model(SAM)

  • 擴充 CloudFormation。
  • 為無伺服器資源與 API 提供精簡語法。
  • 充當轉換層。
  • 將 SAM 語法轉成完整的 CloudFormation 範本。

 

sam

在 AWS 上開發應用程式

SAM 功能

  • 自動產生最小權限的 IAM 角色,並可微調。
  • 以組態定義你的部署管線。
  • 使用 sam buildsam deploy 封裝並部署。
  • sam validate 及早攔截範本錯誤。
  • sam local start-lambda 在本機模擬 Lambda。
    • 提供可持續的本機端點

 

sam features

在 AWS 上開發應用程式

使用 SAM 測試

  • 在部署前於本機建置、呼叫並測試無伺服器應用。
  • 測試 Lambda 函式與 API Gateway 整合。
  • sam local invoke 在本機呼叫函式。
    • 單次呼叫
  • sam local start-api 模擬 API Gateway。

 

testing with sam

在 AWS 上開發應用程式

單元測試

 

unit tests

  • 結合 SAM 與單元測試驗證 Lambda 行為。
  • 本機測試可加速開發循環。
  • 搭配 pytestJUnitJest 等框架。
在 AWS 上開發應用程式

測試流程

 

test workflow

  • sam local generate-event 產生測試事件。
  • 會輸出 JSON 事件檔。
  • sam local invoke FunctionName -e event.json 在本機呼叫。
  • 在部署前加入框架斷言驗證回應。
在 AWS 上開發應用程式

模擬 AWS 服務

 

mocking tests

  • 將本機測試與 moto 等模擬函式庫結合。
  • 與模擬的 AWS 服務互動,無需實際呼叫。
  • 提升測試速度。
  • 降低測試成本。
  • 驗證節流或失敗等錯誤情境。
在 AWS 上開發應用程式

持續整合與持續部署(CI/CD)

  • SAM 應用常透過 CI/CD 管線部署。
  • 自動化建置、測試、封裝與部署。
  • 用 AWS CodeCommit 儲存程式碼與 SAM 範本。
  • 用 AWS CodeBuild 執行測試與 sam build
  • 由 AWS CodePipeline 編排流程。

 

cicd

在 AWS 上開發應用程式

CI/CD 流程

  • 將原始碼與 SAM 範本提交到版本庫。
  • 執行自動化測試與驗證。
  • sam build 封裝應用。
  • sam deploy 部署資源。
  • 部署後以 CloudWatch 監控。

 

workflow

在 AWS 上開發應用程式

部署疑難排解

  troubleshooting

  • 疑難排解是關鍵的營運技能。
  • 常見的部署失敗:
  • IAM 權限問題。
  • 無效的 SAM 或 CloudFormation 範本。
  • Lambda 封裝失敗或缺少相依項。
  • API Gateway 設定錯誤。
在 AWS 上開發應用程式

部署疑難排解

  troubleshooting

  • SAM 部署底層由 CloudFormation 執行。
  • 提供堆疊事件與自動回滾。
  • 協助識別部署失敗。
  • 回滾以還原先前的環境狀態。
在 AWS 上開發應用程式

部署疑難排解

  troubleshooting

  • 使用下列方式進行疑難排解:
  • CloudWatch Logs。
  • API Gateway 執行記錄。
  • Lambda 記錄。
  • CloudWatch 指標。
在 AWS 上開發應用程式

一起來練習吧!

在 AWS 上開發應用程式

Preparing Video For Download...