# AWS - API Gateway Lambda Authorizer
# API Gateway Lambda Authorizer
這是一種組合,由 lambda function 負責驗證 API 請求身份,驗證成功回傳 IAM Policy 或 Allow/Deny decision 控制 API Gateway 是否允許進入後端 Lambda/Service
間單說: API Gateway 問 Lambda 此 request 是否可以進入,Lambda 不處理資料業務,只負責身份與授權

# Authorizer 兩種類型
| Type | Token-based | Request parameter-based |
|---|---|---|
| Name | Token Authorizer | Request Authorizer |
| 驗證輸入來源 | Authorization Header / JWT | Header / Query String / Stage variables |
| 使用場景 | JWT/OAuth2/Cognito token | 客制多屬性驗證 (IP/Device ID/Tenant ID) |
| 效能 | 較快 | 較多資源需處理 |
- TOKEN Authorizer Pattern 常用於
- Cognito JWT Tokens
- OAuth2 access token
- Internal Signed token
- REQUEST Authorizer Patter 適合
- Multi-tenant 驗證
- 根據客制 metadata 判斷授權
- 多欄位驗證 (header + query)
範例
- x-tenant-id
- device-id
# 回傳格式 (IAM Policy Example)
Lambda Authorizer 回傳 IAM Policy
1 | { |
context 可以傳入後端 Lambda 作細粒度的存取控制
# Cache 效能提升
- Authorizer TTL: 可 Caching 授權結果 (預設 300s)
- 決策重複利用:大幅降低 Lambda Authorizer 成本與延遲
# Lambda Authorizer VS Cognito
| Lambda Authorizer | Cognito Authorizer |
|---|---|
| 自行驗證 Token / 邏輯客制化 | 自動驗證 Cognito JWT |
| 適合 OAuth2 多來源身份提供者 | 適合 Mobile/Web w/Cognito |
| 較複雜 / 高維護成本 | 無需維護,內建 Scaling |
- 客制 RBAC/External IdP/ Legacy Token -> Lambda Authorizer
- Cognito User pool -> Cognito Authorizer
# Reference
- AWS - Use API Gateway Lambda authorizers