API 開發

在 AWS 上開發應用程式

Ricardo Sueiras

Principal Technologist

API Gateway 整合

 

API Gateway 整合

  • 多種後端整合選項
  • HTTP:任何可公開路由的端點
  • AWS 服務 API,如 DynamoDB 或 SNS
  • Lambda 函式
  • 透過 VPC 連結存取私有資源
  • 無需真實後端的模擬回應
在 AWS 上開發應用程式

整合類型:代理(proxy)

 

API 整合類型

  • 整合類型決定 API Gateway 的控制程度
  • 代理類型:AWS_PROXYHTTP_PROXY
  • 將整個 HTTP 請求直接送至後端
  • API Gateway 僅透明轉送
  • 回應由後端產生
在 AWS 上開發應用程式

整合類型:非代理(non-proxy)

  • 非代理類型:AWSHTTP
  • 你可設定請求與回應轉換
  • 由對應範本驅動
  • 範本使用 Velocity Template Language(VTL)撰寫

 

API 整合類型

在 AWS 上開發應用程式

請求驗證

 

請求驗證

  • 在到達後端前先驗證請求
  • 捕捉遺漏的必要欄位
  • 捕捉無效的 JSON 格式
  • 捕捉錯誤的參數型別
  • 失敗通常回傳 400 Bad Request
在 AWS 上開發應用程式

請求驗證

 

請求驗證

  • 驗證可涵蓋:
    • 標頭(Headers)
    • 查詢字串參數
    • 請求本文(body)
    • JSON 結構描述(schema)
在 AWS 上開發應用程式

請求驗證

 

請求驗證

  • 驗證帶來的效益:
    • 減少無效的後端請求
    • 降低 Lambda 執行成本
    • 提升 API 可靠性
在 AWS 上開發應用程式

轉換(Transformations)

  • 不改動後端程式碼即可重塑請求與回應
    • 更改負載結構
    • 重新命名欄位
    • 轉換標頭
    • 轉換資料格式
    • 隱藏實作細節
  • 由 VTL 對應範本驅動

 

API 轉換

在 AWS 上開發應用程式

錯誤處理

 

API 錯誤

  • 兩大錯誤類別
    • Gateway 錯誤:由 API Gateway 產生
    • 整合錯誤:後端失敗
  • 常見 Gateway 錯誤:
    • 400 Bad Request:請求驗證失敗
    • 429 Too Many Requests:超出節流限制
在 AWS 上開發應用程式

錯誤處理

 

API 錯誤

  • 常見整合錯誤:
    • 502 Bad Gateway:回應格式錯誤或不良
    • 503 Service Unavailable:後端無法使用或過載
    • 504 Gateway Timeout:超過 29 秒逾時
    • 區域型與私有 REST API 可延長超過 29 秒
在 AWS 上開發應用程式

記錄(Logging)

  • 執行記錄與 CloudWatch 指標是關鍵疑難排解工具
  • API Gateway 可與 CloudWatch 整合以提供:
    • 記錄
    • 指標
    • 執行追蹤

 

 

API 可觀測性

在 AWS 上開發應用程式

記錄(Logging)

  • CloudWatch 記錄可協助你排解:
    • 整合失敗
    • 轉換錯誤
    • 授權失敗
    • Lambda 執行問題

 

 

API 可觀測性

在 AWS 上開發應用程式

階段:跨環境管理 API

 

階段

  • 一份 API 定義可服務多個環境
  • API Gateway 以「階段」管理這些環境
在 AWS 上開發應用程式

階段:跨環境管理 API

 

階段

  • 一份 API 定義可服務多個環境
  • API Gateway 以「階段」管理這些環境
  • 階段是具名參照
  • 指向你 API 設定的部署快照
在 AWS 上開發應用程式

階段:跨環境管理 API

 

階段

  • 一份 API 定義可服務多個環境
  • API Gateway 以「階段」管理這些環境
  • 階段是具名參照
  • 指向你 API 設定的部署快照
  • 常見階段名稱:
    • Dev
    • Test
    • QA 與 Prod
在 AWS 上開發應用程式

階段:跨環境管理 API

 

階段

  • 一份 API 定義可服務多個環境
  • API Gateway 以「階段」管理這些環境
  • 階段是具名參照
  • 指向你 API 設定的部署快照
  • 常見階段名稱:Dev、Test、QA、Prod
  • 每個階段的呼叫 URL 會不同
在 AWS 上開發應用程式

階段:跨環境管理 API

 

階段

  • 一份 API 定義可服務多個環境
  • API Gateway 以「階段」管理這些環境
  • 階段是具名參照
  • 指向你 API 設定的部署快照
  • 常見階段名稱:Dev、Test、QA、Prod
  • 每個階段的呼叫 URL 會不同
  • 多個階段可指向同一部署,便於立即回滾
在 AWS 上開發應用程式

階段:跨環境管理 API

 

階段

  • 變更僅在部署到某個階段後才會生效
在 AWS 上開發應用程式

階段功能

  • 各階段可獨立設定
  • 設定包含階段變數
  • 階段變數為鍵值配對
  • 讓同一部署導向不同後端
  • 環境變更無需重新部署

 

stage

在 AWS 上開發應用程式

階段功能

  • 金絲雀部署(Canary)
    • 僅限 REST API
    • 將部分流量導向新部署
    • 視情況提升為全面釋出
    • 刪除金絲雀即可回滾

 

stage

在 AWS 上開發應用程式

階段功能

  • 節流(Throttling)
    • 於階段層級設定
    • 套用至所有方法,可針對單一方法覆寫

 

stage

在 AWS 上開發應用程式

階段功能

  • 節流
    • 於階段層級設定
    • 套用至所有方法,可針對單一方法覆寫
  • 快取(Caching)
    • 僅限 REST API
    • 於階段層級儲存後端回應
    • 用戶端可用 Cache-Control 略過
    • TTL 0 到 3600 秒,預設 300

 

stage

在 AWS 上開發應用程式

階段功能

  • 記錄有兩種模式
    • 存取記錄
    • $context 變數組成,送至 CloudWatch 記錄群組
    • 執行記錄
    • 擷取完整請求與回應細節

 

stage

在 AWS 上開發應用程式

一起來練習吧!

在 AWS 上開發應用程式

Preparing Video For Download...