部署 API 後,您的 API 使用者需要透過網域名稱而非 IP 位址存取該 API。你可以採取下列任一做法:
- 將
.endpoints.PROJECT_ID.cloud.goog
設為網域名稱 (其中PROJECT_ID
是您的 Google Cloud專案 ID)。 - 您也可以註冊自己的網域名稱 (例如
example.com
),這牽涉到下列作業:- 設定 DNS 名稱伺服器 (或使用 Cloud DNS)。
- 更新註冊資料庫位址。
- 建立及維護 DNS 記錄。
如果您已有 DNS 基礎架構,或者想要註冊自己的網域名稱,請參閱使用您的網域名稱提供 API 一文瞭解詳情。
本頁說明如何設定 Cloud Endpoints API,以便使用 .endpoints.PROJECT_ID.cloud.goog
做為網域名稱。API 必須使用在 Compute Engine、Google Kubernetes Engine 或 Kubernetes 上執行的 OpenAPI,才適用本頁的設定步驟。.endpoints.PROJECT_ID.cloud.goog
網域名稱不支援在 App Engine 上執行的 API。如果是 App Engine 上的 API,建議您使用 PROJECT_ID.appspot.com
做為 Endpoints 服務名稱。在您將 API 部署至 App Engine 時,系統會自動建立名稱格式為 PROJECT_ID.appspot.com
的 DNS 項目。
.cloud.goog
是由 Google 代管的網域,可供 Google Cloud客戶共用。 Google Cloud 專案的專案 ID 一定不會重複,因此採用 .endpoints.PROJECT_ID.cloud.goog
格式的網域名稱即為您的 API 專屬網域名稱。您可以選擇是否設定 .endpoints.PROJECT_ID.cloud.goog
網域名稱。如有需要,您也可以註冊自己的網域名稱。
必備條件
本頁一開始假設您已建立 Cloud Endpoints API,並已將其部署至 Compute Engine、Google Kubernetes Engine 或 Kubernetes。如果您需要 API 以進行測試,可以使用其中一個教學課程來瞭解如何設定和部署範例 API。
設定 DNS
以下程序說明如何設定以 .endpoints.[PROJECT_ID].cloud.goog
做為 Endpoints 服務名稱的 Cloud Endpoints API,其中 [PROJECT_ID]
代表您的 Google Cloud專案 ID。為方便起見,以下程序會將您的 OpenAPI 設定檔稱為 openapi.yaml
。
如何設定 DNS:
- 開啟
openapi.yaml
,並在檔案中新增x-google-endpoints
欄位,如以下程式碼片段所示:swagger: "2.0" host: "[API_NAME].endpoints.[PROJECT_ID].cloud.goog" x-google-endpoints: - name: "[API_NAME].endpoints.[PROJECT_ID].cloud.goog" target: "[IP_ADDRESS]"
一般來說,您會為
host
欄位和x-google-endpoints.name
欄位設定相同的值。部署 OpenAPI 規格時,系統會使用host
欄位中指定的文字做為 Endpoints 服務的名稱。 - 將
[API_NAME]
替換為您的 API 名稱 (例如bookstore
或my-cool-api
)。 - 將
[PROJECT_ID]
替換為您的 Google Cloud 專案 ID。 - 使用 IPv4 位址取代
[IP_ADDRESS]
。舉例來說,如果您將 Endpoints API 服務部署至 Compute Engine 虛擬機器執行個體,則可以使用該虛擬機器的外部 IP。或者,如果您是在負載平衡器後面的一組虛擬機器執行個體 (或 GKE pod) 上執行程式碼,則可以使用負載平衡器的 IP 位址。
- 透過以下指令將新的 OpenAPI 規範部署至 Service Management:
gcloud endpoints services deploy openapi.yaml
舉例來說,如果在 openapi.yaml
檔案中指定以下內容:
swagger: "2.0" host: "my-cool-api.endpoints.my-project-id.cloud.goog" x-google-endpoints: - name: "my-cool-api.endpoints.my-project-id.cloud.goog" target: "192.0.2.1"
您使用前述的 gcloud
指令部署 openapi.yaml
時,Service Management 會建立 DNS A 記錄 my-cool-api.endpoints.my-project-id.cloud.goog
,這個記錄會解析為目標 IP 位址 192.0.2.1
。新的 DNS 設定可能要幾分鐘後才會生效。