API Gateway 階段與執行階段設定

在 AWS 上自動化部署

Dunieski Otano

Amazon Web Services Solutions Architect

三個 URL,一個 API

url

  • 相同 checkout API 需有 dev、staging、prod
  • 各環境連到不同下游資源
  • 硬編值會迫使每個環境重建
  • 階段變數在執行時解決此問題
在 AWS 上自動化部署

什麼是 API Gateway 的階段

api

  • 階段是 API 的一次部署
  • 每個階段都有 自己的 URL
  • 常見階段:dev、staging、prod
  • 一份 API 定義,多個階段
在 AWS 上自動化部署

為何部署要用階段

stages

  • 在 dev 測試 而不影響 prod
  • 在各環境推進 同一個 API
  • 回滾某個階段 不影響其他
  • 每個階段都有自己的 部署歷程
在 AWS 上自動化部署

階段變數

  • 以鍵值對 限定於單一階段
  • ${stageVariables.varName} 參照
  • 用於 每個環境的設定
  • 值不同時 不用改程式碼

variables

在 AWS 上自動化部署

階段變數實戰

  • checkout-api -> dev 階段:lambdaAlias = dev
  • checkout-api -> prod 階段:lambdaAlias = prod
  • 整合呼叫 payments:${stageVariables.lambdaAlias}
  • 一個 API 連到 兩個不同的 Lambda 別名

action

在 AWS 上自動化部署

自訂網域名稱

  • 預設 URL 不美觀abc123.execute-api.us-east-1.amazonaws.com/dev
  • 自訂網域:api.example.com
    • 需要 ACM 憑證 來支援 TLS
  • 基底路徑對應把 路徑綁到階段
    • api.example.com/v1 → prod 階段

custom

在 AWS 上自動化部署

整體如何串起來

all

  • 階段變數 <-> 來自影片 2.3 的 Lambda 別名
  • 同樣觀念可用於 ECS 任務定義版本DynamoDB 資料表名稱
  • 各環境使用核准版本,不需改碼
  • 第 3 章會擴展到各服務
在 AWS 上自動化部署

一起來練習吧!

在 AWS 上自動化部署

Preparing Video For Download...