API がデプロイされた後、API のユーザーは、IP アドレスではなくドメイン名を使って API にアクセスする必要があります。次のことが可能です。
- ドメイン名として
.endpoints.PROJECT_ID.cloud.goog
を構成します(PROJECT_ID
は実際の Google Cloud プロジェクト ID)。 - 独自のドメイン名(例:
example.com
)を登録します。これには以下の手順が必要です。- DNS ネームサーバーを構成する(または Cloud DNS を使用する)。
- レジストリ アドレスを更新する。
- DNS レコードを作成し、維持する。
すでに DNS インフラストラクチャがある場合や、独自のドメイン名を登録する場合は、独自のドメイン名から API を提供するで詳細をご覧ください。
このページでは、ドメイン名として .endpoints.PROJECT_ID.cloud.goog
を使用するように Cloud Endpoints API を構成する方法について説明します。このページの構成手順は、OpenAPI を使用し、Compute Engine、Kubernetes Engine、Kubernetes で実行されている API に適用できます。.endpoints.PROJECT_ID.cloud.goog
ドメイン名は、App Engine で実行されている API ではサポートされていません。App Engine の API には、PROJECT_ID.appspot.com
Endpoints サービス名として使用することをおすすめします。App Engine に API をデプロイすると、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 の DNS を構成する方法について説明します([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 に置き換えます。[IP_ADDRESS]
を IPv4 アドレスに置き換えます。たとえば、Endpoints API サービスを Compute Engine 仮想マシン インスタンスにデプロイする場合、その仮想マシンの外部 IP を使用できます。また、ロードバランサの背後にある仮想マシン インスタンス(または GKE ポッド)のグループでコードを実行する場合、ロードバランサの IP アドレスを使用できます。
- 以下のコマンドを使用して、新しい OpenAPI 仕様をサービス管理にデプロイします。
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 はターゲット IP アドレス 192.0.2.1
に解決される DNS A レコード my-cool-api.endpoints.my-project-
id.cloud.goog
を作成します。新しい DNS 構成が反映されるまでに数分かかる場合があります。