タスクリスト
次のタスクリストを参照しながら、チュートリアルを実施してください。App Engine バックエンド サービス用の API Gateway をデプロイするには、すべてのタスクを行う必要があります。
- Google Cloud プロジェクトを作成または選択する。
- 独自の App Engine をデプロイしていない場合は、サンプルアプリをデプロイします。始める前にをご覧ください。
- 必要な API Gateway サービスを有効にします。
- IAP を構成してアプリのセキュリティを確保します。IAP を構成するをご覧ください。
- API を記述する OpenAPI 仕様を作成し、App Engine へのルートを構成します。API 構成の作成をご覧ください。
- API 構成を使用して API Gateway をデプロイします。API ゲートウェイをデプロイするをご覧ください。
- アプリに対するアクティビティを追跡します。 API の活動を追跡するをご覧ください。
- Google Cloud アカウントへの課金が発生しないようにします。クリーンアップをご覧ください。
始める前に
Cloud Console で [ダッシュボード] ページに移動し、Google Cloud プロジェクトを選択または作成します。
プロジェクトに対して課金が有効になっていることを確認します。
このチュートリアルで使用するプロジェクト ID をメモします。このページでは以降、このプロジェクト ID を PROJECT_ID として記載します。
Cloud SDK をダウンロードしてインストールします。
gcloud
コンポーネントを更新します。gcloud components update
デフォルト プロジェクトを設定します。PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。
gcloud config set project PROJECT_ID
独自の App Engine アプリをデプロイしていない場合は、ご使用の言語の App Engine のクイックスタートの手順に従って
gcloud
コマンドライン ツールを使用して Google Cloud プロジェクトを選択または作成し、サンプルアプリをデプロイします。アプリの URL、アプリがデプロイされているリージョンとプロジェクト ID をメモします。
必要なサービスを有効にする
API Gateway では、次の Google サービスを有効にする必要があります。
名前 | タイトル |
---|---|
apigateway.googleapis.com |
API Gateway API |
servicemanagement.googleapis.com |
Service Management API |
servicecontrol.googleapis.com |
Service Control API |
必要なサービスが有効になっていることを確認するには:
gcloud services list
必要なサービスが表示されない場合は、次のコマンドを使用してサービスを有効にします。
gcloud services enable apigateway.googleapis.comgcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
gcloud
サービスの詳細については、gcloud
サービスをご覧ください。
アプリのセキュリティを確保するための IAP の構成
App Engine アプリを保護するには、Identity Aware Proxy(IAP)を使用して、リクエストが認証されるようにする必要があります。
手順に従って IAP を有効化し、アプリにログインできることを確認します。
API 構成の作成
API Gateway を使用して、デプロイした App Engine バックエンドへのトラフィックを管理するには、API 構成が必要です。
特殊なアノテーションを含む OpenAPI 仕様を使用して API 構成を作成し、必要な API Gateway の動作を定義できます。API Gateway がアプリを呼び出すために必要な情報を取得できるよう、このドキュメントには各 App Engine アプリの URL を設定した Google 固有のフィールドも追加する必要があります。
openapi2-appengine.yaml
という名前のテキスト ファイルを作成します(便宜上、このページでは OpenAPI 仕様をこのファイル名で表記していますが、必要に応じて別の名前を指定することもできます)。- 次のように、
openapi2-appengine.yaml
ファイルのpaths
セクションに各アプリを一覧表示します。# openapi2-appengine.yaml swagger: '2.0' info: title: API_ID optional-string description: Sample API on API Gateway with an App Engine backend version: 1.0.0 schemes: - https produces: - application/json paths: /hello: get: summary: Greet a user operationId: hello x-google-backend: address: APP_URL jwt_audience: IAP_CLIENT_ID responses: '200': description: A successful response schema: type: string
title
フィールドで、API_ID を API の名前に置き換え、optional-string を選択した簡単な説明に置き換えます。API がまだ存在しない場合、API Config を作成するコマンドを実行すると、指定した名前の API が作成されます。title
フィールドの値は、この API へのアクセスを許可する API キーの作成時に使用されます。API の命名ガイドラインについては、API ID の要件をご覧ください。x-google-backend
セクションのaddress
フィールドで、APP_URL を App Engine サービスの実際の URL(呼び出された API のフルパス)に置き換えます。例:https://myapp.an.r.appspot.com/hello
IAP_CLIENT_ID を IAP の設定時に作成した OAuth クライアント ID に置き換えます。
- 次のコマンドを入力します。
- CONFIG_ID は API 構成の名前を指定します。
- API_ID は API の名前を指定します。API がまだ存在しない場合、このコマンドにより作成されます。
- PROJECT_ID は Google Cloud プロジェクトの名前を指定します。
- SERVICE_ACCOUNT_EMAIL は、API 構成の作成用に明示的に作成されたサービス アカウントを指定します。
gcloud api-gateway api-configs create CONFIG_ID \ --api=API_ID --openapi-spec=openapi2-appengine.yaml \ --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL
API 構成がダウンストリーム システムに反映されるため、このオペレーションには数分かかることがあります。複雑な API 構成を正常に作成するには、最大で 10 分かかることがあります。
- API 構成が作成されたら、次のコマンドを実行して詳細を表示できます。
gcloud api-gateway api-configs describe CONFIG_ID \ --api=API_ID --project=PROJECT_ID
API Gateway のデプロイ
これで、API Gateway に API をデプロイできるようになりました。API Gateway に API をデプロイすると、API クライアントが API へのアクセスに使用できる外部 URL も定義されます。
次のコマンドを実行して、作成した API 構成を API Gateway にデプロイします。
gcloud api-gateway gateways create GATEWAY_ID \ --api=API_ID --api-config=CONFIG_ID \ --location=GCP_REGION --project=PROJECT_ID
ここで
- GATEWAY_ID はゲートウェイの名前を指定します。
- API_ID は、このゲートウェイに関連付けられた API Gateway API の名前を指定します。
- CONFIG_ID は、ゲートウェイにデプロイされた API 構成の名前を指定します。
GCP_REGION は、デプロイされたゲートウェイの Google Cloud リージョンです。
PROJECT_ID は Google Cloud プロジェクトの名前を指定します。
正常に完了すると、次のコマンドを使用してゲートウェイの詳細を表示できます。
gcloud api-gateway gateways describe GATEWAY_ID \ --location=GCP_REGION --project=PROJECT_ID
このコマンドの出力の defaultHostname
プロパティの値をメモします。これは、次のステップでデプロイをテストするために使用するゲートウェイ URL のホスト名の部分です。
API デプロイのテスト
これで、ゲートウェイのデプロイ時に生成された URL を使用して API にリクエストを送信できるようになりました。
次の curl
コマンドを入力します。
- DEFAULT_HOSTNAME は、デプロイするゲートウェイ URL のホスト名の部分を指定します。
defaultHostname
の値は、上記のgateways describe
コマンドの出力で確認できます。 hello
は、API 構成で指定されたパスです。
curl https://DEFAULT_HOSTNAME/hello
次に例を示します。
curl https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
次の出力が表示されます。
My-AppEngineApp: Access denied for user gateway-1a2b3c@04d5e6f35FgdsT73dFrty-tp.iam.gserviceaccount.com requesting https://my-project.appspot.com/helloGET. If you should have access, contact myldap@google.com and include the full text of this message.
Success! API Gateway が App Engine バックエンド サービスへのアクセスを管理しています。App Engine アプリへのアクセス権を付与するには、API Gateway に対する適切な権限を持つサービス アカウントを構成する必要があります。
API の活動を追跡する
Cloud Console の [API Gateway] ページで API のアクティビティ グラフを確認します。API をクリックして、[概要] ページにアクティビティ グラフを表示します。グラフにリクエストが反映されるまでにしばらく時間がかかる場合があります。
[ログビューア] ページで API のリクエストログを確認します。[ログ エクスプローラ] ページへのリンクは、Cloud Console の [API Gateway] ページにあります。
[API Gateway] ページで次の操作を行います。- 表示する API を選択します。
- [詳細] タブをクリックします。
- [ログ] の下にあるリンクをクリックします。
クリーンアップ
このクイックスタートで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の操作を行います。
このチュートリアルで使用した Google Cloud プロジェクトの削除もできます。