ESPv2 を使用したマネージド インスタンス グループ(MIG)用の Cloud Endpoints のスタートガイド


このチュートリアルでは、マネージド インスタンス グループ(MIG)のビルド済み Docker コンテナで動作するサンプル API と Extensible Service Proxy V2(ESPv2)を構成してデプロイする方法を説明します。

サンプルコードの REST API は、OpenAPI 仕様に従って作成されています。このチュートリアルでは、API キーを作成して API へのリクエストで使用する方法も説明します。

Cloud Endpoints の概要については、Endpoints についてEndpoints アーキテクチャをご覧ください。

目標

タスクの概要を示す次のリストを参照しながら、チュートリアルを実施してください。API にリクエストを送信するには、すべてのタスクを行う必要があります。

  1. Google Cloud プロジェクトを設定します。始める前にをご覧ください。
  2. サンプルコードをダウンロードします。サンプルコードを取得するをご覧ください。
  3. Endpoints の構成に使用する openapi.yaml ファイルを構成します。Endpoints を構成するをご覧ください。
  4. Endpoints 構成をデプロイして Endpoints サービスを作成します。Endpoints 構成をデプロイするをご覧ください。
  5. API と ESPv2 をマネージド インスタンス グループ(MIG)のバックエンドでデプロイします。API バックエンドをデプロイするをご覧ください。
  6. IP アドレスを使用して API にリクエストを送信します。IP アドレスを使用してリクエストを送信するをご覧ください。
  7. サンプル API の DNS レコードを構成します。Endpoints の DNS を構成するをご覧ください。
  8. 完全修飾ドメイン名を使用して API にリクエストを送信します。FQDN を使用してリクエストを送信するをご覧ください。
  9. API のアクティビティを追跡します。API の活動を追跡するをご覧ください。
  10. Google Cloud アカウントへの課金が発生しないようにします。クリーンアップをご覧ください。

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 後で必要になるため、プロジェクト ID をメモしておきます。
  7. サンプル API にリクエストを送信するためのアプリケーションが必要です。

    • Linux ユーザーと MacOS ユーザーの場合: このチュートリアルでは、curl の使用例を示します。これは通常、オペレーティング システムにプリインストールされています。 curl を所有していない場合は、curlリリースとダウンロードのページからダウンロードできます。
    • Windows ユーザーの場合: このチュートリアルでは、Invoke-WebRequest の使用例を示しています。これは PowerShell 3.0 以降でサポートされています。
  8. Google Cloud CLI をダウンロードします
  9. gcloud CLI を更新し、Endpoints コンポーネントをインストールします。
    gcloud components update
  10. Google Cloud CLI(gcloud)が、Google Cloud にある対象のデータとサービスへのアクセスが許可されていることを確認します。
    gcloud auth login
    表示された新しいブラウザタブで、アカウントを選択します。
  11. デフォルト プロジェクトを実際のプロジェクト ID に設定します。
    gcloud config set project YOUR_PROJECT_ID

    YOUR_PROJECT_ID を実際のプロジェクト ID に置き換えます。他にも Google Cloud プロジェクトがあり、gcloud を使用してそのプロジェクトを管理する場合は、gcloud CLI 構成の管理をご覧ください。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

サンプルコードのダウンロード

サンプルコードをローカルマシンにダウンロードします。

Java

サンプル API をクローニングまたはダウンロードするには:

  1. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
    git clone https://github.com/GoogleCloudPlatform/java-docs-samples

    または、zip ファイルとしてサンプルをダウンロードし、ファイルを解凍します。

  2. サンプルコードが含まれているディレクトリに移動します。
    cd java-docs-samples/endpoints/getting-started
Python

サンプル API をクローニングまたはダウンロードするには:

  1. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples

    または、zip ファイルとしてサンプルをダウンロードし、ファイルを解凍します。

  2. サンプルコードが含まれているディレクトリに移動します。
    cd python-docs-samples/endpoints/getting-started
Go

サンプル API をクローニングまたはダウンロードするには:

  1. GOPATH 環境変数が設定されていることを確認します。
  2. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
    go get -d github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
  3. サンプルコードが含まれているディレクトリに移動します。
    cd $GOPATH/src/github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
PHP

サンプル API をクローニングまたはダウンロードするには:

  1. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
    git clone https://github.com/GoogleCloudPlatform/php-docs-samples

    または、zip ファイルとしてサンプルをダウンロードし、ファイルを解凍します。

  2. サンプルコードが含まれているディレクトリに移動します。
    cd php-docs-samples/endpoints/getting-started
Ruby

サンプル API をクローニングまたはダウンロードするには:

  1. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples

    または、zip ファイルとしてサンプルをダウンロードし、ファイルを解凍します。

  2. サンプルコードが含まれているディレクトリに移動します。
    cd ruby-docs-samples/endpoints/getting-started
NodeJS

サンプル API をクローニングまたはダウンロードするには:

  1. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples

    または、zip ファイルとしてサンプルをダウンロードし、ファイルを解凍します。

  2. サンプルコードが含まれているディレクトリに移動します。
    cd nodejs-docs-samples/endpoints/getting-started

Endpoints を構成する

サンプルコードには、OpenAPI 構成ファイル openapi.yaml が含まれています。このファイルは OpenAPI 仕様 v2.0 に準拠しています。openapi.yaml の構成とデプロイをローカルマシンで実行します。 Endpoints を設定するには:

  1. サンプルコードのディレクトリで、openapi.yaml 構成ファイルを開きます。

    Java
    swagger: "2.0"
    info:
      description: "A simple Google Cloud Endpoints API example."
      title: "Endpoints Example"
      version: "1.0.0"
    host: "echo-api.endpoints.YOUR-PROJECT-ID.cloud.goog"
    Python
    swagger: "2.0"
    info:
      description: "A simple Google Cloud Endpoints API example."
      title: "Endpoints Example"
      version: "1.0.0"
    host: "echo-api.endpoints.YOUR-PROJECT-ID.cloud.goog"
    Go
    swagger: "2.0"
    info:
      description: "A simple Google Cloud Endpoints API example."
      title: "Endpoints Example"
      version: "1.0.0"
    host: "echo-api.endpoints.YOUR-PROJECT-ID.cloud.goog"
    PHP
    swagger: "2.0"
    info:
      description: "A simple Google Cloud Endpoints API example."
      title: "Endpoints Example"
      version: "1.0.0"
    host: "echo-api.endpoints.YOUR-PROJECT-ID.cloud.goog"
    Ruby
    swagger: "2.0"
    info:
      description: "A simple Google Cloud Endpoints API example."
      title: "Endpoints Example"
      version: "1.0.0"
    host: "echo-api.endpoints.YOUR-PROJECT-ID.cloud.goog"
    Node.js
    swagger: "2.0"
    info:
      description: "A simple Google Cloud Endpoints API example."
      title: "Endpoints Example"
      version: "1.0.0"
    host: "echo-api.endpoints.YOUR-PROJECT-ID.cloud.goog"

    次の点にご注意ください。

    • 上記の構成サンプルでは host フィールドの近辺に表示されている行を変更する必要があります。openapi.yaml ファイルを Endpoints にデプロイするには、完全な OpenAPI ドキュメントが必要です。
    • サンプル openapi.yaml ファイルには、このチュートリアルでは不要な認証を構成するためのセクションが含まれています。YOUR-SERVICE-ACCOUNT-EMAILYOUR-CLIENT-ID の行を構成する必要はありません。
    • OpenAPI は言語に依存しない仕様です。利便性を考慮し、各言語の GitHub リポジトリで、同じ openapi.yaml ファイルが getting-started サンプル内に用意されています。
  2. host フィールドで、テキストを次の形式の Endpoints サービス名に置き換えます。
    host: "echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog"

    YOUR_PROJECT_ID を Google Cloud プロジェクト ID に置き換えます。次に例を示します。

    host: "echo-api.endpoints.example-project-12345.cloud.goog"

この echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog は Endpoints サービスの名前です。これは、API にリクエストを送信するために使用する完全修飾ドメイン名(FQDN)ではありません。

Endpoints に必要な OpenAPI ドキュメントのフィールドについては、Endpoints を構成するをご覧ください。 次の構成手順をすべて完了し、IP アドレスを使用してサンプル API にリクエストを正常に送信できるようになったら、Endpoints の DNS を構成するを参照して、echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog を FQDN として構成する方法をご確認ください。

Endpoints 構成をデプロイする

Endpoints の構成をデプロイするには、gcloud endpoints services deploy コマンドを使用します。このコマンドを実行すると、Service Management を使用してマネージド サービスが作成されます。

Endpoints 構成をデプロイするには:

  1. endpoints/getting-started ディレクトリ内にいることを確認します。
  2. 構成をアップロードしてマネージド サービスを作成します。
    gcloud endpoints services deploy openapi.yaml
    

gcloud コマンドが Service Management API を呼び出して、openapi.yaml ファイルの host フィールドで指定した名前のマネージド サービスを作成します。Service Management は、openapi.yaml ファイル内の設定に従ってサービスを構成します。openapi.yaml に変更を加えるときは、このファイルを再デプロイして Endpoints サービスを更新する必要があります。

Service Management でサービスの作成と構成が行われるとき、情報がターミナルに出力されます。openapi.yaml ファイル内のパスが API キーを要求していないことを示す警告は無視して問題ありません。サービスの構成が完了すると、Service Management に、次のようなサービス構成 ID とサービス名を含むメッセージが表示されます。

Service Configuration [2017-02-13r0] uploaded for service [echo-api.endpoints.example-project-12345.cloud.goog]

上記の例では、2017-02-13r0 はサービス構成 ID、echo-api.endpoints.example-project-12345.cloud.goog は Endpoints サービスです。サービス構成 ID は、日付スタンプとそれに続くリビジョン番号で構成されます。同じ日に openapi.yaml ファイルを再度デプロイすると、サービス構成 ID のリビジョン番号が増分されます。Endpoints のサービス構成は、Google Cloud コンソールの [Endpoints] > [サービス] ページで確認できます。

エラー メッセージが表示された場合は、Endpoints 構成のデプロイのトラブルシューティングをご覧ください。

必要なサービスの確認

Endpoints と ESP を使用するには、少なくとも次の Google サービスの有効化が必要です。
名前 タイトル
servicemanagement.googleapis.com Service Management API
servicecontrol.googleapis.com Service Control API
endpoints.googleapis.com Google Cloud Endpoints

ほとんどの場合、gcloud endpoints services deploy コマンドによってこれらの必須サービスが有効化されます。ただし、以下の状況では、gcloud コマンドは正常に完了しますが、必須サービスが有効になりません。

  • Terraform などのサードパーティのアプリケーションを使用していて、上記のサービスを含めていない場合。

  • 上記のサービスが明示的に無効にされている既存の Google Cloud プロジェクトに Endpoints 構成をデプロイした場合。

必要なサービスが有効になっていることを確認するには、次のコマンドを実行します。

gcloud services list

必要なサービスが表示されない場合は、次のコマンドを使用してサービスを有効にします。

gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
gcloud services enable endpoints.googleapis.com

Endpoints サービスも有効にします。

gcloud services enable ENDPOINTS_SERVICE_NAME

ENDPOINTS_SERVICE_NAME を確認するには、次のいずれかを行います。

  • Endpoints 構成をデプロイ後、Cloud コンソールの [Endpoints] ページに移動します。[サービス名] 列に、考えられる ENDPOINTS_SERVICE_NAME のリストが表示されます。

  • OpenAPI の場合、ENDPOINTS_SERVICE_NAME は OpenAPI 仕様の host フィールドで指定したものです。gRPC の場合、ENDPOINTS_SERVICE_NAME は gRPC Endpoints 構成の name フィールドで指定したものです。

gcloud コマンドの詳細については、gcloud サービスをご覧ください。

API バックエンドのデプロイ

インスタンス テンプレートの作成

VM インスタンスのグループの作成に使用するテンプレートを作成します。テンプレートから作成された各インスタンスにより、ESPv2 とバックエンド アプリケーション サーバーが起動されます。

  1. Google Cloud Console で、[インスタンス テンプレート] ページに移動します。

    [インスタンス テンプレート] に移動

  2. [インスタンス テンプレートを作成] をクリックします。

  3. [名前] に「load-balancing-espv2-template」と入力します。

  4. [マシンの構成] で、[マシンタイプ] を e2-micro に設定します。

  5. [ブートディスク] で、[イメージ] を Container Optimized OS stable version に設定します。

  6. [ファイアウォール] で、[HTTP トラフィックを許可する] をオンにします。

  7. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックして、詳細設定を表示します。

  8. [管理] タブをクリックします。[自動化] に、次の起動スクリプトを入力します。ENDPOINTS_SERVICE_NAME を必ず更新してください。

    sudo docker network create --driver bridge esp_net
    sudo docker run \
      --detach \
      --name=echo \
      --net=esp_net \
      gcr.io/google-samples/echo-python:1.0
    sudo docker run \
      --detach \
      --name=esp \
      --publish=80:9000 \
      --net=esp_net \
      gcr.io/endpoints-release/endpoints-runtime:2 \
      --service=ENDPOINTS_SERVICE_NAME \
      --rollout_strategy=managed \
      --listener_port=9000 \
      --healthz=/healthz \
      --backend=echo:8080
    

    このスクリプトは、インスタンスの起動時に、echo アプリケーション サーバーと ESPv2 プロキシ サーバーを取得してインストールした後、起動します。

  9. [作成] をクリックします。

続行する前に、テンプレートの作成が完了するまでお待ちください。

リージョン マネージド インスタンス グループを作成する

アプリケーションを実行するには、インスタンス テンプレートを使用してリージョン マネージド インスタンス グループを作成します。

  1. Google Cloud Console で、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] に移動

  2. [インスタンス グループを作成] をクリックします。

  3. [名前] に「load-balancing-espv2-group」と入力します。

  4. [ロケーション] で、[複数のゾーン] を選択します。

  5. [リージョン] で、us-central1 を選択します。

  6. [ゾーンを設定] プルダウン メニューをクリックして、[ゾーン] を表示します。次のゾーンを選択します。

    • us-central1-b
    • us-central1-c
    • us-central1-f
  7. [インスタンス テンプレート] で load-balancing-espv2-template を選択します。

  8. [自動スケーリング] で [自動スケーリングしない] を選択します。

  9. [インスタンス数] を「3」に設定します。

  10. [インスタンスの再配布] で、[オン] を選択します。

  11. [自動修復] と [ヘルスチェック] で、[ヘルスチェックをしない ] を選択します。

  12. [作成] をクリックします。[インスタンス グループ] ページにリダイレクトされます。

ロードバランサを作成

このセクションでは、HTTP トラフィックをインスタンス グループに振り分けるグローバル ロードバランサの作成に必要な手順を説明します。

このロードバランサは、フロントエンドを使用して着信トラフィックを受信し、バックエンドを使用してこのトラフィックを正常なインスタンスに配信します。ロードバランサは複数のコンポーネントで構成されるため、ロードバランサを作成するタスクは以下のステップに分かれます。

  • バックエンドの構成
  • フロントエンドの構成
  • 確認と完了

これらのステップをすべて完了して、ロードバランサを作成します。

  1. Google Cloud Console で、[ロードバランサの作成] ページに移動します。

    [ロードバランサの作成] に移動

  2. [アプリケーション ロードバランサ(HTTP/S)] セクションで、[構成を開始] をクリックします。

  3. [インターネット接続または内部専用] で、[インターネットから自分の VM へ] を選択します。次に、[続行] をクリックします。

  4. ロードバランサの [名前] に「espv2-load-balancer」と入力します。

バックエンドの構成

  1. [グローバル外部アプリケーション ロードバランサの作成] ページの左パネルで、[バックエンドの構成] をクリックします。
  2. [バックエンド サービスとバックエンド バケットの作成または選択] をクリックして、プルダウン メニューを開きます。[バックエンド サービス] をクリックし、[バックエンド サービスを作成] をクリックします。
  3. 新しいウィンドウで、バックエンド アプリケーションの [名前] に「espv2-backend」と入力します。
  4. [インスタンス グループ] を load-balancing-espv2-group に設定します。
  5. [ポート番号] を 80 に設定します。これにより、ロードバランサとインスタンス グループ間の HTTP トラフィックを許可することができます。
  6. [分散モード] で、[使用率] を選択します。
  7. [完了] をクリックすると、バックエンドが作成されます。
  8. ロードバランサのバックエンドのヘルスチェックを作成します。

    1. [ヘルスチェック] で、プルダウン メニューから [ヘルスチェックを作成](または [別のヘルスチェックを作成])をクリックします。新しいウィンドウが開きます。
    2. 新しいウィンドウで、[名前] に「espv2-load-balancer-check」と入力します。
    3. [プロトコル] を HTTP に設定します。
    4. [ポート] に「80」と入力します。
    5. このチュートリアルでは、[リクエストパス] を /healthz に設定します。これは、ESPv2 が応答するように設定されているパスです。
    6. ヘルス条件を次のように設定します。

      1. [チェック間隔] を 3 秒に設定します。これは、プローブを開始してから次のブローブを開始するまでの時間です。
      2. [タイムアウト] を 3 秒に設定します。これは、Google Cloud でプローブに対するレスポンスを待ち受ける時間です。この値は、チェック間隔で設定した数値以下にする必要があります。
      3. [正常しきい値] を [2 回連続して成功] に設定します。これは、プローブが連続で成功するとインスタンスが正常であると判断される回数です。
      4. [異常しきい値] を [2 回連続して失敗] に設定します。これは、プローブが連続で失敗するとインスタンスに異常があると判断される回数です。
    7. [保存して次へ] をクリックすると、ヘルスチェックが作成されます。

  9. [作成] をクリックすると、バックエンド サービスが作成されます。

フロントエンドの構成

  1. [グローバル外部アプリケーション ロードバランサの作成] ページの左パネルで、[フロントエンドの構成] をクリックします。
  2. [フロントエンドの設定] ページで、[名前] に「espv2-ipv4-frontend」と入力します。
  3. [プロトコル] を HTTP に設定します。
  4. [ポート] を 80 に設定します。
  5. [完了] をクリックすると、フロントエンドが作成されます。

確認と完了

  1. ロードバランサを作成する前に、負荷分散設定を確認します。

    1. [Create global external Application Load Balancer] ページの左パネルで、[確認と完了] をクリックします。
    2. [確認と完了] ページで、バックエンドが次のように設定されていることを確認します。

      • [バックエンド サービス] が espv2-backend
      • [エンドポイント プロトコル] が HTTP
      • [ヘルスチェック] が espv2-load-balancer-check
      • [インスタンス グループ] が load-balancing-espv2-group
    3. 同じページで、フロントエンドが使用する IP アドレスのプロトコルHTTP になっていることを確認します。

  2. [Create global external Application Load Balancer] ページの左パネルで [作成] をクリックすると、ロードバランサの作成が完了します。

    ロードバランサの作成が完了するまでに数分待機することが必要な場合があります。

  3. ロードバランサが作成されたら、[ロードバランサ] ページでその IP アドレスを見つけます。

    [ロードバランサ] に移動

IP アドレスを使用してリクエストを送信する

サンプル API と ESPv2 がデプロイされたバックエンドで動作したら、ローカルマシンから API にリクエストを送信できます。

API キーを作成し、環境変数を設定する

サンプルコードには API キーが必要です。リクエストを簡単にするために、API キーの環境変数を設定します。

  1. API に使用したものと同じ Google Cloud プロジェクトの API 認証情報ページで API キーを作成します。別の Google Cloud プロジェクトで API キーを作成するには、Google Cloud プロジェクトでの API の有効化をご覧ください。

    [ドメインの確認] ページに移動

  2. [認証情報を作成] をクリックして [API キー] を選択します。
  3. キーをクリップボードにコピーします。
  4. [閉じる] をクリックします。
  5. ローカルマシンで、API キーを貼り付けて環境変数に割り当てます。
    • Linux または Mac OS の場合: export ENDPOINTS_KEY=AIza...
    • Windows PowerShell の場合: $Env:ENDPOINTS_KEY="AIza..."

リクエストを送信する

Linux または Mac OS

前の手順で設定した ENDPOINTS_KEY 環境変数を使用して、curl を使用して HTTP リクエストを送信します。IP_ADDRESS をインスタンスの外部 IP アドレスに置き換えます。

curl --request POST \
   --header "content-type:application/json" \
   --data '{"message":"hello world"}' \
   "http://IP_ADDRESS:80/echo?key=${ENDPOINTS_KEY}"

上記の curl で:

  • --data オプションは、API に送信するデータを指定します。
  • --header オプションは、データが JSON 形式であることを指定します。

PowerShell

前の手順で設定した ENDPOINTS_KEY 環境変数を使用して、Invoke-WebRequest により HTTP リクエストを送信します。IP_ADDRESS をインスタンスの外部 IP アドレスに置き換えます。

(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' `
    -Headers @{"content-type"="application/json"} `
    -URI "http://IP_ADDRESS:80/echo?key=$Env:ENDPOINTS_KEY").Content

上記の例では、最初の 2 行はバッククォートで終わります。この例を PowerShell に貼り付けるとき、バッククォートの後にスペースがないことを確認してください。このリクエスト例で使用されているオプションについては、Microsoft のドキュメントの Invoke-WebRequest をご覧ください。

サードパーティ製アプリ

Chrome ブラウザの拡張機能である Postman などのサードパーティのアプリケーションを使用してリクエストを送信できます。

  • HTTP 動詞として POST を選択します。
  • ヘッダーで、キー content-type とその値 application/json を選択します。
  • 本文で、次のように入力します。
    {"message":"hello world"}
  • URL で、環境変数ではなく実際の API キーを使用します。 例:
    http://192.0.2.0:80/echo?key=AIza...

API によって送信メッセージがエコーバックされ、次のようなレスポンスが返されます。

{
  "message": "hello world"
}

正常なレスポンスが返されなかった場合は、レスポンス エラーのトラブルシューティングをご覧ください。

これで Endpoints の API のデプロイとテストが完了しました。

Endpoints の DNS を構成する

API の Endpoints サービス名は .endpoints.YOUR_PROJECT_ID.cloud.goog ドメイン中にあるため、openapi.yaml ファイルの構成を少し変更することで、完全修飾ドメイン名(FQDN)として使用できます。このようにすると、サンプル API にリクエストを送信するときに IP アドレスの代わりに echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog を使用できます。

Endpoints DNS を構成するには:

  1. OpenAPI 構成ファイルである openapi.yaml を開き、次のスニペットに示すように、ファイルの最上位レベルに x-google-endpoints プロパティを追加(インデントまたはネストさせずに)します。
    host: "echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog"
    x-google-endpoints:
    - name: "echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog"
      target: "IP_ADDRESS"
  2. name プロパティで、YOUR_PROJECT_ID を実際のプロジェクト ID で置き換えます。
  3. target プロパティで、IP_ADDRESS をサンプル API にリクエストを送信する際に使用した IP アドレスで置き換えます。
  4. 更新した OpenAPI 構成ファイルを Service Management にデプロイします。
    gcloud endpoints services deploy openapi.yaml
    

たとえば、openapi.yaml ファイルは次のように構成されていると仮定します。

host: "echo-api.endpoints.example-project-12345.cloud.goog"
x-google-endpoints:
- name: "echo-api.endpoints.example-project-12345.cloud.goog"
  target: "192.0.2.1"

前述の gcloud コマンドで openapi.yaml ファイルをデプロイすると、Service Management はターゲット IP アドレス 192.0.2.1 に解決される DNS A レコード echo-api.endpoints.my-project-id.cloud.goog を作成します。新しい DNS 構成が反映されるまでに数分かかる場合があります。

SSL を設定する

DNS と SSL の構成方法の詳細については、Endpoints で SSL を有効にするをご覧ください。

FQDN を使用してリクエストを送信する

サンプル API の DNS レコードが構成されたところで、FQDN(YOUR_PROJECT_ID は実際のプロジェクト ID で置き換えます)と設定済みの ENDPOINTS_KEY 環境変数を使用してサンプル API にリクエストを送信します。
  • Linux または Mac OS の場合:
    curl --request POST \
        --header "content-type:application/json" \
        --data '{"message":"hello world"}' \
        "http://echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog:80/echo?key=${ENDPOINTS_KEY}"
  • Windows PowerShell の場合:
    (Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' -Headers @{"content-type"="application/json"} -URI "http://echo-api.endpoints.[YOUR_PROJECT_ID].cloud.goog:80/echo?key=$Env:ENDPOINTS_KEY").Content

API のアクティビティを追跡する

API の活動を追跡するには:

  1. [エンドポイント] > [サービス] ページで API のアクティビティ グラフを確認します。

    [Endpoints] の [サービス] ページに移動


    グラフにリクエストが反映されるまでに、しばらく時間がかかる場合があります。
  2. [ログ エクスプローラ] ページで、API のリクエストログを確認します。

    [ログ エクスプローラ] ページに移動

API のデベロッパー ポータルを作成する

Cloud Endpoints Portal を使用してデベロッパー ポータルを作成できます。デベロッパー ポータルとは、サンプル API の操作に使用できるウェブサイトです。詳細については、Cloud Endpoints Portal の概要をご覧ください。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

  1. gcloud CLI(gcloud)が、Google Cloud にある対象のデータとサービスにアクセスできるよう許可されていることを確認します。

    gcloud auth login
    
  2. 次のコマンドを入力して、Google Cloud プロジェクトのプロジェクト ID を表示します。

    gcloud projects list
    
  3. 前の手順で表示されたプロジェクト ID のうち、アプリケーションが含まれるプロジェクトの ID をデフォルト Google Cloud プロジェクトに設定します。

    gcloud config set project [YOUR_PROJECT_ID]
    
  4. Google Cloud プロジェクト内のすべてのマネージド サービスの名前を取得します。

    gcloud endpoints services list
    
  5. Service Management からサービスを削除します。SERVICE_NAME は、削除するサービスの名前に置き換えます。

    gcloud endpoints services delete SERVICE_NAME
    

    gcloud endpoints services delete コマンドを実行しても、マネージド サービスはすぐに削除されません。マネージド サービスは 30 日間無効になり、その間に必要に応じてサービスを復元できます。30 日後、マネージド サービスは完全に削除されます。

  6. [ロードバランサ] ページに移動します。

    [ロードバランサ] に移動

    バックエンド サービス espv2-backend とヘルスチェック espv2-load-balancer-check とともに、ロードバランサ espv2-load-balancer を削除します。

  7. [インスタンス グループ] ページに移動

    [インスタンス グループ] に移動

    load-balancing-espv2-group を削除

  8. [インスタンス テンプレート] ページに移動します。

    [インスタンス テンプレート] に移動

    load-balancing-espv2-template を削除します。

次のステップ