AWS - API Gateway
API Gateway
Amazon API Gateway 是一個全託管的服務,用來 建立、發布、保護、監控與維護 API,
讓用戶可以透過 HTTP / WebSocket API 安全地與後端服務(如 Lambda、ECS、EC2、DynamoDB)溝通。
API Gateway 是你的系統「大門口」。
它接收外部請求、檢查身份、限制流量,然後再轉送到你的後端服務。
核心功能
| 功能 | 說明 |
|---|
| 🌐 建立 API | 提供 REST、HTTP、WebSocket 三種類型的 API |
| 🔒 安全控管 | 支援 IAM、Cognito、Lambda Authorizer、API Key |
| ⚙️ 整合多種後端 | Lambda、ECS、EC2、S3、DynamoDB、HTTP endpoint |
| 📊 監控與記錄 | 整合 CloudWatch Logs / Metrics |
| 🚦 流量控制 | Throttling、Caching、Rate Limiting |
| 💰 按使用量付費 | 依 API 請求數計費(無需伺服器) |
API 類型比較
| 類型 | 用途 | 特點 |
|---|
| REST API | 舊版完整功能 | 支援 API Key、Usage Plan、Mapping Template(legacy) |
| HTTP API | 輕量快速、低成本 | 整合 Lambda、HTTP backend、Cognito |
| WebSocket API | 即時雙向通訊 | 用於聊天、即時遊戲、IoT 裝置控制 |
新專案:用 HTTP API
舊專案或進階需求(Transformation、API Key):用 REST API
即時應用:用 WebSocket API
運作架構(REST / HTTP API)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [ Client ] │ ▼ [ API Gateway ] │ ├─ Authorization (Cognito / IAM / Lambda Authorizer) │ ├─ Request Transformation (Mapping Template) │ ├─ Caching / Throttling / Metrics │ ▼ [ Backend ] ├─ AWS Lambda ├─ ECS / EC2 ├─ S3 / DynamoDB └─ Other HTTP endpoint
|
驗證與授權機制
| 機制 | 說明 | 適用 |
|---|
| IAM Auth | 使用 AWS IAM Policy 驗證(SigV4 簽署) | 內部服務呼叫 |
| Cognito User Pool Authorizer | 使用者登入後 JWT Token 驗證 | 前端應用(Web/App) |
| Lambda Authorizer (Custom) | 使用自訂邏輯驗證 | SSO 或自訂憑證 |
| API Key + Usage Plan | 控制配額與速率 | 第三方 API 存取 |
Cognito 適合「App 登入」場景,
IAM 適合「Server to Server」內部調用,
Lambda Authorizer 適合「企業自訂邏輯」。
效能優化機制
| 機制 | 功能 | 效益 |
|---|
| Caching | 在 API Gateway 層緩存結果 | 降低 Lambda 負載 |
| Throttling / Quotas | 限制每秒請求數 | 防止濫用 |
| Request Validation | 自動檢查輸入格式 | 減少後端錯誤 |
| Compression (GZIP) | 減少回應大小 | 提升速度 |
| Integration Timeout | 最多 29 秒 | 控制後端延遲風險 |