クイックスタート: Google Cloud コンソールを使用してサービスへのトラフィックを保護する
このページでは、API Gateway に API をデプロイして、バックエンド サービスへのトラフィックを保護する方法について説明します。
Google Cloud コンソールを使用して Cloud Run functions でバックエンド サービスにアクセスする新しい API をデプロイするには、手順に沿って操作します。このクイックスタートでは、API キーを使用してバックエンドを不正アクセスから保護する方法についても説明します。
始める前に
Google Cloud コンソールで、[API Gateway] ページに移動します。
API Gateway では、次の Google サービスを有効にする必要があります。
名前 タイトル apigateway.googleapis.comAPI Gateway API servicemanagement.googleapis.comService Management API servicecontrol.googleapis.comService Control API 選択したプロジェクトでこれらのサービスをまだ有効にしていない場合は、有効にするよう求められます。
お支払いが有効になっていることを確認します。
API バックエンドをデプロイする
API ゲートウェイは、デプロイされたバックエンド サービスの前に配置され、すべての受信リクエストを処理します。このクイックスタートでは、API Gateway は、以下に示す関数を含む helloGET という名前の Cloud Run functions のバックエンドに受信呼び出しをルーティングします。
/** * HTTP Cloud Function. * This function is exported by index.js, and is executed when * you make an HTTP request to the deployed function's endpoint. * * @param {Object} req Cloud Function request context. * More info: https://expressjs.com/en/api.html#req * @param {Object} res Cloud Function response context. * More info: https://expressjs.com/en/api.html#res */ exports.helloGET = (req, res) => { res.send('Hello World!'); };
クイックスタート: Google Cloud CLI の使用の手順に沿って、サンプルの Cloud Run 関数コードをダウンロードし、Cloud Run functions のバックエンド サービスをデプロイします。
API 構成を作成する
API Gateway は API 構成を使用してバックエンド サービスに呼び出しを転送します。特殊な拡張機能を含む OpenAPI 仕様を使用して、選択した API Gateway の動作を定義できます。サポートされている OpenAPI 拡張機能の詳細については、以下をご覧ください。
このクイックスタートの OpenAPI 仕様には、Cloud Run functions のバックエンドへの転送手順が含まれています。
OpenAPI 2.0
# openapi-functions.yaml swagger: '2.0' info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 schemes: - https produces: - application/json paths: /hello: get: summary: Greet a user operationId: hello x-google-backend: address: https://GATEWAY_LOCATION -PROJECT_ID.cloudfunctions.net/helloGET responses: '200': description: A successful response schema: type: string
OpenAPI 3.x
# openapi-functions.yaml openapi: 3.0.4 info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 # Define reusable components in x-google-api-management x-google-api-management: backend: functions_backend: address: https://GATEWAY_LOCATION-PROJECT_ID.cloudfunctions.net/helloGET pathTranslation: APPEND_PATH_TO_ADDRESS protocol: "http/1.1" # Apply the backend configuration by referencing it by name. Set at the root so this applies to all operations unless overridden. x-google-backend: functions_backend paths: /hello: get: summary: Greet a user operationId: hello responses: '200': description: A successful response content: application/json: schema: type: string
この OpenAPI 仕様を使用して API を定義します。
コマンドラインから、
openapi-functions.yamlという名前の新しいファイルを作成します。前の例で示した OpenAPI 仕様の内容をコピーして、新しく作成したファイルに貼り付けます。
ファイルを次のように編集します。
titleフィールドで、API_ID を API の名前(次のステップで作成します)に置き換え、optional-string を任意の簡単な説明に置き換えます。このフィールドの値は、この API へのアクセス権を付与する API キーを作成するときに使用されます。API ID の命名ガイドラインについては、API ID の要件をご覧ください。addressフィールドで、PROJECT_ID を Google Cloud プロジェクトの名前に置き換え、GATEWAY_LOCATION をゲートウェイがデプロイされている Google Cloud に置き換えます。
ゲートウェイの作成
これで、API Gateway でゲートウェイを作成してデプロイする準備が整いました。
Google Cloud コンソールで [API Gateway] ページを開きます。
[Create Gateway] をクリックします。
[API] セクションで、次の操作を行います。
- [API を選択] プルダウンから新しい API を作成するか、既存の API を選択します。このチュートリアルでは、[新しい API を作成] を選択します。
- API の表示名を入力します。
- API の API ID を入力します。
- (省略可)Key-Value 形式を使用して API にラベルを追加します。複数のラベルを追加するには、[Add Label] をクリックし、値を入力します。
[API Config] セクションで、次の操作を行います。
- 新しい API 構成を作成するか、[構成を選択] プルダウンから既存の API 構成を選択します。このチュートリアルでは、[新しい API 構成を作成] を選択します。
- API の定義に使用する
openapi-functions.yamlをファイル ブラウザを使用してアップロードします。 - API 構成の表示名を入力します。
プルダウン リストからサービス アカウントを選択します。選択したサービス アカウントが API Gateway の ID として使用されます。
(省略可)Key-Value 形式を使用して、API 構成にラベルを追加します。複数のラベルを追加するには、[Add Label] をクリックし、値を入力します。
[Gateway details] セクションで、次の操作を行います。
- ゲートウェイの表示名を入力します。 ゲートウェイの URL が自動的に生成されます。
- プルダウン メニューからゲートウェイの場所を選択します。
- (省略可)ゲートウェイに Key-Value 形式でラベルを追加します。複数のラベルを追加するには、[Add Label] をクリックし、値を入力します。
[Create Gateway] をクリックします。
これにより、新しく作成されたゲートウェイに API 構成がデプロイされます。 ゲートウェイに API 構成をデプロイすると、API クライアントで API へのアクセスに使用できる外部 URL が定義されます。
オペレーションが完了するまでに数分かかることがあります。次の図に示すように、作成およびデプロイのプロセスのステータスを確認するには、メイン ナビゲーション バーの [通知] アイコンをクリックしてステータス通知を表示します。

正常に完了すると、ゲートウェイのランディング ページでゲートウェイの詳細を表示できます。
ゲートウェイ URL をメモします。これは、次のステップでデプロイをテストするために使用します。
API デプロイをテストする
これでゲートウェイのデプロイ時に生成された URL を使用して API にリクエストを送信できるようになりました。
ブラウザに次の URL を入力します。
- GATEWAY_URL は、デプロイするゲートウェイ URL を指定します。
helloは、API 構成で指定されたパスです。
https://GATEWAY_URL/hello
次に例を示します。
https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
ブラウザに「Hello World!」というメッセージが表示されます。
API Gateway が正常に作成されてデプロイされました。
API キーを使用してアクセスを保護する
API バックエンドへのアクセスを保護するには、プロジェクトに関連付けられた API キーを生成し、そのキーに API を呼び出す権限を付与します。詳細については、API キーで API アクセスを制限するをご覧ください。
このクイックスタートで使用している Google Cloud プロジェクトに関連付けられた API キーがまだ存在しない場合は、API キーの作成の手順に沿って追加します。
API キーを使用してゲートウェイへのアクセスを保護するには:
- サービスの API キーサポートを有効にします。
- Google Cloud コンソールで、[API とサービス] > [ライブラリ] に移動します。
- 検索バーに、作成した API のマネージド サービス名を入力します。この値は、API ランディング ページの API の [マネージド サービス] 列で確認できます。 次に例を示します。
my-api-123abc456def1.apigateway.my-project.cloud.goog
- サービスのランディング ページで、[有効にする] をクリックします。
- API 構成の作成に使用される OpenAPI 仕様を変更して、すべてのトラフィックに API キー検証セキュリティ ポリシーを適用する手順を含めます。以下に示すように、
securityタイプとsecuritySchemesを追加します。OpenAPI 2.0
# openapi2-functions.yaml swagger: '2.0' info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 schemes: - https produces: - application/json paths: /hello: get: summary: Greet a user operationId: hello x-google-backend: address: https://GATEWAY_LOCATION-PROJECT_ID.cloudfunctions.net/helloGET security: - api_key: [] responses: '200': description: A successful response schema: type: string securityDefinitions: # This section configures basic authentication with an API key. api_key: type: "apiKey" name: "key" in: "query"
securityDefinitionは、仕様で定義されているすべてのパスへのアクセスをリクエストするときに、keyという名前のクエリ パラメータとして渡される API キーをリクエストするように API を構成します。OpenAPI 3.x
# openapi-functions.yaml openapi: 3.0.4 info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 # Define reusable components in x-google-api-management x-google-api-management: backend: functions_backend: address: https://GATEWAY_LOCATION-PROJECT_ID.cloudfunctions.net/helloGET pathTranslation: APPEND_PATH_TO_ADDRESS protocol: "http/1.1" # Apply the backend configuration by referencing it by name. Set at the root so this applies to all operations unless overridden. x-google-backend: functions_backend components: # This section configures basic authentication with an API key. securitySchemes: google_api_key: type: apiKey name: x-api-key in: header security: - google_api_key: [] paths: /hello: get: summary: Greet a user operationId: hello responses: '200': description: A successful response content: application/json: schema: type: string
securitySchemesは、仕様で定義されているすべてのパスへのアクセスをリクエストするときに、keyという名前のクエリ パラメータとして渡される API キーをリクエストするように API を構成します。 - 新しい API 構成を作成して既存のゲートウェイにデプロイします。
- [Gateways] ランディング ページに移動します。
- リストからゲートウェイを選択して、詳細を表示します。
- [編集] をクリックして、ゲートウェイ構成ペインを開きます。
- [API config] セクションで次の操作を行います。
- 使用可能なプルダウンから [Create a new API config] を選択します。
- ファイル ブラウザを使用して、変更した OpenAPI 仕様をアップロードします。
- 新しい API 構成の表示名を入力します。
- プルダウン リストからサービス アカウントを選択します。選択したサービス アカウントが API Gateway の ID として使用されます。
- (省略可)Key-Value 形式を使用して、API 構成にラベルを追加します。複数のラベルを追加するには、[Add Label] をクリックし、値を入力します。
- [更新] をクリックします。
API キーをテストする
変更した API を作成してデプロイしたら、API にリクエストを送信してみてください。
ブラウザに次の URL を入力します。
- GATEWAY_URL は、デプロイするゲートウェイ URL を指定します。
helloは、API 構成で指定されたパスです。
https://GATEWAY_URL/hello
これにより次のエラーが発生するはずです。
UNAUTHENTICATED:Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.
ブラウザに次の URL を入力します。
- GATEWAY_URL は、デプロイするゲートウェイ URL を指定します。
helloは、API 構成で指定されたパスです。- API_KEY は、API キーを使用してアクセスを保護するで作成した API キーを指定します。
https://GATEWAY_URL/hello?key=API_KEY
ブラウザに「Hello World!」と表示されます。
お疲れさまでした。これで API バックエンドは API Gateway で正常に保護されました。 追加の API キーを生成して、新しい API クライアントのオンボーディングを開始できます。
API のアクティビティを追跡する
Google Cloud コンソールの [API Gateway] ページで、API のアクティビティ グラフを確認します。API をクリックして、[概要] ページにアクティビティ グラフを表示します。グラフにリクエストが反映されるまでにしばらく時間がかかることがあります。
[ログ エクスプローラ] ページで API のリクエストログを確認します。[ログ エクスプローラ] ページへのリンクは、Google Cloud コンソールの [API Gateway] ページにあります。
[API Gateway] ページで次の操作を行います。
- 表示する API を選択します。
- [詳細] タブをクリックします。
- [ログ] の下にあるリンクをクリックします。
クリーンアップ
このクイックスタートで使用したリソースに対して Google Cloud アカウントに課金されないようにするには、次の操作を行います。
このチュートリアルで使用した Google Cloud プロジェクトの削除もできます。
次のステップ
- API Gateway についての詳細を確認する
- 開発環境の構成を確認する