API 閘道架構
API Gateway 是一種 API 管理系統,可為 API 提供管理、監控和驗證功能。構成 API Gateway 的元件包括:
- API Gateway:用於管理已部署 API 的各個層面
- Service Control:用於套用 API 管理規則
- Service Management:用於管理 API 設定
- gcloud CLI:用於部署及管理 API
- Google Cloud 控制台:用於記錄、監控和共用
架構
以下是 API Gateway 中涉及的主要元件的概略圖:
在下圖中:
API 供應商負責在 API Gateway 中建立及部署 API。每個 API 都由以 OpenAPI 2.0 規格撰寫的檔案定義。
OpenAPI 規格定義了 API 的 REST 端點公開網址、API 存取的後端服務,以及 API 的其他特性,例如驗證、資料格式和回應選項。
API 用戶端會向 API Gateway 代管的 API 提出 REST 要求,以便存取後端服務。API 用戶端可以是任何可發出 REST 呼叫的應用程式,例如瀏覽器、行動應用程式或網頁應用程式。
API 用戶端只需要知道 API 的網址、要求動詞 (例如
GET
、PUT
、POST
、DELETE
)、任何驗證要求,以及傳送至或接收自 API 的任何資料格式。API 用戶端不需要瞭解任何後端實作資訊。事實上,您可以將單一 API 部署在 API Gateway 上,並設定根據要求中傳遞的資訊存取不同的後端。
API Gateway 元件
API Gateway
API Gateway 提供全代管的付費即用解決方案,可用於代管 API。API Gateway 透過明確定義的 REST API 為後端服務提供安全的存取機制,無論服務實作方式為何,都能在所有服務中保持一致。
API Gateway 已與 Google Cloud 整合,因此您可以使用與其他 Google Cloud 產品相同的開發、監控、記錄和追蹤工具。
如果您要連線至 Google Cloud 以外代管的後端服務,仍可利用所有 Google Cloud 服務,包括用於控管 API 存取權的驗證和授權服務。
Service Control API
Service Control API 會在執行階段套用 API 管理規則,例如 API 金鑰驗證、監控和記錄。Service Control 提供下列方法:
- 檢查:驗證驗證和 API 金鑰,並指示是否應允許某個呼叫
- 報告:向系統通報記錄和監控功能的相關記錄
Service Management API
您可以使用 OpenAPI 規格定義 API。接著,您可以使用 gcloud CLI 將 OpenAPI 規格上傳至 Service Management,以便建立 API 設定。其他設定相關工作也會在這裡進行,例如與其他開發人員共用您的 API、在不同的專案中啟用或停用 API,以及產生 API 金鑰。
gcloud CLI
gcloud CLI 提供 gcloud 指令列工具,可用來呼叫各種 Google Cloud 服務。您可以使用 Google Cloud CLI 上傳 OpenAPI 規格,建立 API 設定,然後將 API 設定部署至 API Gateway。
Cloud 控制台
[
Google Cloud console](https://console.cloud.google.com/) 是 Google Cloud console 的圖形使用者介面。使用 Google Cloud 控制台公開 Service Control 記錄的監控和記錄資料,設定驗證和授權,並讓開發人員產生 API 金鑰來呼叫 API。
處理 API 要求
API 設定中包含兩種端點:
- API 端點:定義用戶端用於使用 API 的公開端點。
- 後端端點:定義 API 用來連線至後端服務的端點。安全性設定 (例如 HTTP 或 HTTPS 存取權) 是由後端服務的實作方式定義。
對 API 端點提出的要求會傳送至後端端點,包括要求中傳遞的任何資料。後端服務的回應 (包括服務傳回的任何資料) 會傳回用戶端。
轉送要求
收到要求後:
API Gateway 會為 Cloud Trace 建立追蹤記錄符記。
API Gateway 會比對傳入要求的路徑與目標 API。找到相符的路徑後,API Gateway 會針對指定 API 執行任何驗證步驟。
如果必須進行 JWT 驗證,API Gateway 會使用簽署者的適當公開金鑰進行驗證,並驗證 JWT 中的目標對象欄位。如果需要 API 金鑰,API Gateway 會呼叫 Service Control API 來驗證金鑰。
Service Control 會查詢金鑰以進行驗證,並確保與金鑰相關聯的專案已啟用 API。如果金鑰無效或專案尚未啟用 API,則會拒絕呼叫,並透過 Service Control API 進行記錄。
如果 Service Control 成功驗證金鑰,系統即會將要求以及所有原始標頭和 JWT 驗證標頭 (如適當) 轉送至後端。
當 API Gateway 收到後端的回應時,就會將該回應傳回給呼叫端,並將最後的時間資訊傳送到 Trace。系統會透過 Service Control API 記錄呼叫點,該 API 會將指標和記錄寫入適當的目的地。