Cloud Endpoints クイックスタート

このクイックスタートでは、Cloud Endpoints で管理するサンプル API をデプロイする手順について説明します。サンプルコードには次のものが含まれています。

  • 3 文字の IATA コードから空港名を照会するための REST API。
  • API 構成を Cloud Endpoints にアップロードするためのスクリプト。
  • サンプル API をホストする App Engine フレキシブル バックエンドをデプロイするためのスクリプト。

いくつかのリクエストをサンプル API に送信すると、Google Cloud Platform(GCP)Console で Cloud Endpoints のアクティビティ グラフと Stackdriver のログを表示できます。これらのツールによって API をモニタリングし、使用状況に関する分析情報を得ることができます。

このクイックスタートでは、スクリプトを使用して構成手順を簡素化し、アクティビティ グラフとログの動作をすばやく確認できます。サンプル API の構成とデプロイの方法については、API フレームワークのいずれかのチュートリアルを選択してください。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud Platform プロジェクトを選択または作成します。

    [リソースの管理] ページに移動

  3. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

Cloud Shell の起動

  1. サンプル API に使用するプロジェクトを使用していることを確認してください。

  2. コンソール ウィンドウの上部にある [Cloud Shell をアクティブにする] ボタンをクリックします。

Cloud Shell をアクティブにする

コンソールの下部の新しいフレーム内で Cloud Shell セッションが開き、コマンドライン プロンプトが表示されます。シェル セッションが初期化されるまで、数秒かかる場合があります。

Cloud Shell セッション

既存のプロジェクトを使用している場合は、次のコマンドを実行して、すべての gcloud コンポーネントの最新バージョンがインストールされていることを確認してください。

gcloud components update

サンプルコードの取得

  1. Cloud Shell に次のコマンドを入力して、サンプル API とスクリプトを取得します。

    git clone https://github.com/GoogleCloudPlatform/endpoints-quickstart
    
  2. サンプルコードが格納されたディレクトリに移動します。

    cd endpoints-quickstart
    

Endpoints 構成をデプロイする

Endpoints に対して REST API を公開するには、API が記述されている OpenAPI 構成ファイルが必要です。サンプル API には、事前に構成された OpenAPI ファイル(openapi.yaml)が付属しています。

Cloud Endpoints では、Cloud Platform のインフラストラクチャ サービスである Google Service Management を使用して、API やサービスの作成および管理を行います。Endpoints を使用して API を管理するには、API の OpenAPI 構成を Service Management にデプロイします。

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

  1. endpoints-quickstart ディレクトリで、Cloud Shell に次のように入力します。

    cd scripts
    
  2. サンプルに含まれている次のスクリプトを実行します。

    ./deploy_api.sh
    

Cloud Endpoints では、OpenAPI 構成ファイル内の host フィールドに基づいてサービスが識別されます。deploy_api.sh スクリプトを実行すると、host フィールドに設定された名前の一部として Cloud プロジェクトの ID が設定されます(独自のサービス用の OpenAPI 構成ファイルを準備する際には、この処理を手動で行う必要があります)。

その後、スクリプトにより、コマンド gcloud endpoints services deploy openapi.yaml を使用して、OpenAPI 構成が Service Management にデプロイされます。

Service Management でサービスの作成と構成が行われるとき、多くの情報がコンソールに出力されます。openapi.yaml 内のパスが API キーを要求していない、という警告は無視してもかまいません。正常に完了すると、サービス構成 ID とサービス名を示す次のような行が表示されます。

    Service Configuration [2017-02-13-r2] uploaded for service [airports-api.endpoints.example-project.cloud.goog]

API バックエンドをデプロイする

ここまでの手順で OpenAPI 構成を Service Management にデプロイしましたが、API バックエンドを処理するコードはまだデプロイしていません。サンプルに含まれている deploy_app.sh スクリプトにより、API バックエンドをホストする App Engine フレキシブル環境が作成され、API が App Engine にデプロイされます。

API バックエンドをデプロイするには:

endpoints-quickstart/scripts ディレクトリで、次のスクリプトを実行します。

./deploy_app.sh

このスクリプトでは、コマンド gcloud app create --region="$REGION" を実行することによって、us-central(米国中部)リージョンに App Engine フレキシブル環境が作成されます。

App Engine フレキシブル バックエンドが作成されるまでに数分かかります。App Engine が作成されると、コンソールに次のように表示されます。

Success! The app is now created.

次に、gcloud app deploy コマンドを実行して、サンプル API を App Engine にデプロイします。

コンソールに次のような行が表示されます。

Deploying ../app/app_template.yaml...You are about to deploy the following services:

API が App Engine にデプロイされるまでに数分かかります。API が App Engine に正常にデプロイされると、次のような行が表示されます。

Deployed service [default] to [https://example-project.appspot.com]

API にリクエストを送信する

サンプル API をデプロイしたら、次のスクリプトを実行して API にリクエストを送信できます。

./query_api.sh

このスクリプトでは、API にリクエストを送信するために使用される curl コマンドがエコーされ、その結果が表示されます。コンソールに次のような行が表示されます。

curl "https://example-project.appspot.com/airportName?iataCode=SFO"
San Francisco International Airport

API には、SEAJFK などの有効な IATA 空港コードを設定した 1 つのクエリ パラメータ iataCode を渡します。

./query_api.sh JFK

: App Engine がリクエストにレスポンスするまで数分かかる場合があります。リクエストを送信して HTTP 502、503 または他のサーバーエラーが返された場合には、1 分ほど待ってからもう一度リクエストしてください。

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

API の活動を追跡する

Cloud Endpoints によってデプロイされた API を利用すると、Google Cloud Platform Console で重要なオペレーション指標をモニタリングし、Stackdriver Logging によってユーザーと使用状況に関する分析情報を得ることができます。

  1. トラフィック生成スクリプトを実行して、グラフとログにデータが入力されるようにします。

    ./generate_traffic.sh
    
  2. Endpoints のページで API の活動グラフを確認します。
    Endpoints の活動のグラフを表示

    リクエストがグラフに反映されるまでにしばらく時間がかかることがあります。データが表示されるまでの間に、次の操作を行うことができます。

    • [権限] サイドパネルが開いていない場合は、[+権限] をクリックします。[権限] パネルを使用して、API にアクセスできるユーザーを制御し、アクセスレベルを制御できます。

    • [デプロイの履歴] をクリックします。このタブには、デプロイ時間や変更のデプロイ担当者など、API のデプロイ履歴が表示されます。

    • [概要] をクリックします。受信トラフィックが表示されるはずです。トラフィック生成スクリプトを 1 分間実行すると、合計レイテンシ グラフに 3 行(50 パーセンタイル値、95 パーセンタイル値、98 パーセンタイル値)が表示されます。このデータからレスポンス時間をすばやく推定できます。

  3. Endpoints グラフの一番下までスクロールし、[メソッド] の下で [GET/airportName] をクリックします。[ログビューア] ページに API のリクエストログが表示されます。

  4. コンソール ウィンドウの上部にある [Cloud Shell をアクティブにする] ボタンをクリックして、Cloud Shell を表示します。

  5. Ctrl-C を入力してスクリプトを停止します。

API に割り当てを追加する

Cloud Endpoints は割り当てを提供します。割り当てを使用すると、アプリケーションが API を呼び出せるペース(レート)を制御できます。割り当ての設定により、呼び出し元アプリケーションによる過剰な数のリクエストから API を保護するための使用制限を指定できます。

  1. 割り当てがある Endpoints 構成をデプロイします。

    ./deploy_api.sh ../openapi_with_ratelimit.yaml
    

    更新された Endpoints 構成をデプロイすると、1 分以内にアクティブになります。

  2. [認証情報] ページに移動します。
    認証情報

  3. [認証情報を作成] をクリックし、[API キー] を選択します。新しい API キーが画面に表示されます。二重長方形のアイコンをクリックして、API キーをクリップボードにコピーします。

  4. Cloud Shell で、次のように入力します。[YOUR_KG_API_KEY] は、先ほど作成した API キーに置き換えます。

    export API_KEY=YOUR-API-KEY
    
  5. 生成された API キーを使用して API にリクエストを送信します。

    ./query_api_with_key.sh $API_KEY
    

    コンソールに次のような行が表示されます。

    curl -H 'x-api-key: AIzeSyDbdQdaSdhPMdiAuddd_FALbY7JevoMzAB' "https://example-project.appspot.com/airportName?iataCode=SFO"
    San Francisco International Airport
    

  6. これで、API は 1 分あたりのリクエスト数が 5 に制限されました。次のコマンドを実行して、トラフィックを API に送信し、割り当て制限をトリガーします。

    ./generate_traffic_with_key.sh $API_KEY
    
  7. このスクリプトを 5〜10 秒間実行した後、Ctrl-C キーを押してスクリプトを停止します。

  8. 別の認証済みリクエストを API に送信します。

    ./query_api_with_key.sh $API_KEY
    

コンソールに次のような行が表示されます。

{
 "code": 8,
 "message": "Insufficient tokens for quota 'airport_requests' and limit 'limit-on-airport-requests' of service 'example-project.appspot.com' for consumer 'api_key:AIzeSyDbdQdaSdhPMdiAuddd_FALbY7JevoMzAB'.",
 "details": [
  {
   "@type": "type.googleapis.com/google.rpc.DebugInfo",
   "stackEntries": [],
   "detail": "internal"
  }
 ]
}

レスポンスが異なる場合は、generate_traffic_with_key.sh スクリプトをもう一度実行してから、再試行してください。

これで、API のレート制限を正しく設定できました。API メソッドごとに異なる制限の設定や、複数種類の割り当ての作成を行ったり、どのユーザーがどの API を使用しているかを追跡したりすることもできます。

Endpoints の活動のグラフを表示

詳細については、割り当てについてをご覧ください。

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

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

クリーンアップ

このチュートリアルで使用したリソースについて GCP アカウントに課金されないようにする手順は次のとおりです。

課金されないようにするには、GCP プロジェクトを削除してプロジェクト内のすべてのリソースへの課金を停止します。

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。