arrow_back

Cloud Endpoints: Qwik Start

ログイン 参加
知識をテストして、コミュニティで共有しましょう
done
700 を超えるハンズオンラボ、スキルバッジ、コースへのアクセス

Cloud Endpoints: Qwik Start

ラボ 1時間 universal_currency_alt クレジット: 1 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
知識をテストして、コミュニティで共有しましょう
done
700 を超えるハンズオンラボ、スキルバッジ、コースへのアクセス

GSP164

Google Cloud セルフペース ラボ

概要

このラボでは、Google Cloud Endpoints でサンプル API をデプロイします。Google Cloud Endpoints とは、App Engine アプリケーション内で API を生成するためのツールセットです。サンプルコードには次の内容が含まれます。

  • 3 文字の IATA コード(SFO、JFK、AMS など)から空港名を取得できる REST API
  • API 構成を Cloud Endpoints にアップロードするためのスクリプト
  • サンプル API をホストする Google App Engine フレキシブル バックエンドをデプロイするためのスクリプト

サンプル API にいくつかのリクエストを送信した後、Cloud Endpoints のアクティビティ グラフやログを確認できます。これらのツールを使って API をモニタリングしたり、使用状況に関する分析情報を入手したりすることができます。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。

    ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] パネルでも [ユーザー名] を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] パネルでも [パスワード] を確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスのリストを含むメニューを表示するには、左上のナビゲーション メニューをクリックします。ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. サンプルコードの取得

  1. Cloud Shell に次のコマンドを入力して、サンプル API とスクリプトを取得します。
gsutil cp gs://spls/gsp164/endpoints-quickstart.zip . unzip endpoints-quickstart.zip
  1. サンプルコードが入っているディレクトリに移動します。
cd endpoints-quickstart

タスク 2. Endpoints 構成をデプロイする

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

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

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

  1. endpoints-qwikstart ディレクトリで、次のように入力します。
cd scripts
  1. サンプルに含まれている次のスクリプトを実行します。
./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]

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Endpoints 構成をデプロイする。

タスク 3. API バックエンドをデプロイする

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

  • API バックエンドをデプロイするには、現在のディレクトリが endpoints-quickstart/scripts であることを確認し、次のスクリプトを実行します。
./deploy_app.sh ../app/app_template.yaml {{{project_0.startup_script.app_region}}}

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

App Engine フレキシブル バックエンドが作成されるまでには数分かかります。

注: ERROR: NOT_FOUND: Unable to retrieve P4SA: from GAIA」メッセージが表示される場合は、deploy_app.sh スクリプトを再度実行します。

App Engine が作成されると、Cloud Shell に次のように表示されます。

Success! The app is now created. Please use `gcloud app deploy` to deploy your first app.

続いて gcloud app deploy コマンドが実行され、サンプル API が App Engine にデプロイされます。

Cloud Shell に次のような行が表示されます。

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

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

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

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 API バックエンドをデプロイする。

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

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

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

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

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

  1. テストのため、Cloud Shell で次の例を実行します。
./query_api.sh JFK

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

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 API にリクエストを送信する。

タスク 5. API の活動を追跡する

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

  1. Cloud Shell でトラフィック生成スクリプトを実行して、グラフとログにデータを入力します。
./generate_traffic.sh 注: このスクリプトはリクエストを繰り返し生成し、5 分後に自動的にタイムアウトします。スクリプトをすぐに終了するには、Cloud Shell で Ctrl+C キーを押します。
  1. コンソールで、ナビゲーション メニュー > [エンドポイント] > [サービス] を選択し、[Airport Codes] をクリックしてサービスのアクティビティ グラフを確認します。グラフにリクエストが反映されるまでにしばらく時間がかかる場合があります。データが表示されるまでの間に、次の操作を行うことができます。
  • [権限] サイドパネルが開いていない場合は、[権限パネルを表示] をクリックします。[権限] パネルでは、API にアクセスできるユーザーとアクセスレベルを制御できます。

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

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

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

  2. Cloud Shell で Ctrl+C キーを押してスクリプトを停止します。

タスク 6. 割り当てを API に追加する

注: これは、Quotas のベータ版リリースです。この機能は SLA や非推奨ポリシーの対象ではなく、下位互換性のない方法で変更される可能性があります。

Cloud Endpoints では割り当てを設定できるため、アプリケーションが API を呼び出せるペース(レート)を制御できます。割り当てを使用して、単一のクライアントによる過度な使用から API を保護できます。

  1. 割り当てがあるエンドポイント構成をデプロイします。
./deploy_api.sh ../openapi_with_ratelimit.yaml
  1. アプリケーションを再デプロイして、新しい Endpoints 構成を使用します(数分かかる場合があります)。
./deploy_app.sh ../app/app_template.yaml {{{project_0.startup_script.app_region}}}

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 割り当てを API に追加する。

  1. コンソールで、ナビゲーション メニュー > [API とサービス] > [認証情報] に移動します。
  2. [認証情報を作成] をクリックし、[API キー] を選択します。新しい API キーが画面に表示されます。
  3. [クリップボードにコピー] アイコンをクリックし、クリップボードにコピーします。
  4. Cloud Shell で、次のように入力します。YOUR-API-KEY は、先ほど作成した API キーに置き換えます。
export API_KEY=YOUR-API-KEY
  1. 先ほど作成した 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
  1. これで、API の 1 秒あたりのリクエスト数が 5 に制限されました。次のコマンドを実行してトラフィックを API に送信し、割り当て制限をトリガーします。
./generate_traffic_with_key.sh $API_KEY
  1. このスクリプトを 5〜10 秒間実行した後、Cloud Shell で Ctrl+C キーを押してスクリプトを停止します。

  2. 別の認証済みリクエストを 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 メソッドごとに異なる制限を設定したり、複数種類の割り当てを作成したり、どのユーザーがどの API を使用しているかを追跡したりすることもできます。

次のラボを受講する

このラボは Qwik Start と呼ばれるラボシリーズの一部です。これらのラボでは、Google Cloud で利用できる多くの機能を体験できます。ラボカタログで「Qwik Start」を検索し、興味のあるラボを探してみてください。

次のステップと詳細情報

割り当てについて詳しくは、以下を参照してください。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2024 年 4 月 25 日

ラボの最終テスト日: 2024 年 4 月 25 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします