API Gateway への Cloud Endpoints API のデプロイ
Cloud Endpoints は、API の保護、モニタリング、分析、割り当て量の設定を行えるようにする API 管理システムです。Endpoints は API をホストするために Extensible Service Proxy(ESP)または Extensible Service Proxy V2 ベータ版(ESPv2 ベータ版)を使用します。
Endpoints を使用する場合、API の定義方法には 3 つのオプションがあります。
- Cloud Endpoints for OpenAPI
- Cloud Endpoints for gRPC
- Cloud Endpoints Frameworks for the App Engine スタンダード環境
API Gateway を使用した API の開発
API Gateway は、OpenAPI 仕様のバージョン 2.0 を使用して記述された API をサポートします。つまり、API Gateway の Endpoints から OpenAPI 仕様をデプロイできます。
API Gateway への Endpoints OpenAPI 仕様のデプロイ
API Gateway は、Cloud Endpoints for OpenAPI でサポートされているものと同じ OpenAPI の仕様の定義形式とオプションをサポートします。つまり、Endpoints OpenAPI 仕様と同じセキュリティ、割り当て、その他の定義を使用して、API Gateway で API を定義できます。
Endpoints と API Gateway の違いは、OpenAPI 仕様定義内の host
プロパティの処理方法のみです。
- Endpoints で、
host
プロパティを ESP のデプロイ時に作成された URL のホスト名の部分に設定します。ここで、ESP は Endpoints API をホストするために使用するサービスです。 API Gateway で、
host
を省略するか、デプロイされた API の DNS 名に設定します。API プロバイダは、OpenAPI 仕様を API コンシューマと共有するときに、これを DNS 名に設定することがよくあります。ただし、API Gateway にはhost
プロパティの値は適用されません。
たとえば、以下に、Cloud Functions にデプロイされたバックエンド サービスにアクセスする API を定義するために Endpoints で使用される OpenAPI 仕様の一部を示します。
swagger: '2.0' info: title: Cloud Endpoints + GCF description: Sample API on Cloud Endpoints with a Google Cloud Functions backend version: 1.0.0 host: ESP_HOST schemes: - https produces: - application/json paths: /hello: ...
Endpoints の場合:
ESP をデプロイします。これにより、ESP にデプロイされた API へのアクセスに使用する URL が作成されます。次に例を示します。
https://gateway-12345-uc.a.run.app
OpenAPI 仕様を編集して、
host
プロパティを ESP URL のドメイン名に設定します。次に例を示します。host: gateway-12345-uc.a.run.app
OpenAPI 仕様を ESP にデプロイします。
ESP URL を使用して API にアクセスします。上記の OpenAPI 仕様では、次の URL を使用してこの API にアクセスできるように、
paths
要素が/hello
に設定されています。https://gateway-12345-uc.a.run.app/hello
ご覧のように、Endpoints では、最初に ESP をデプロイして host
プロパティの値を設定可能にする必要があります。
この API 定義を使用して API Gateway の API 構成を作成するには、host
プロパティを完全に削除するか、ファイルに残します。API Gateway では host
プロパティの値は適用されません。
デプロイされたゲートウェイの URL、つまりクライアントが API へのアクセスに使用する URL は、ゲートウェイの作成時に次の形式で定義されます。
https://GATEWAY_ID-HASH.REGION_CODE.gateway.dev
ここで、GATEWAY_ID はゲートウェイの名前、HASH は API のデプロイ時に生成された一意のハッシュコード、REGION_CODE は GCP リージョン(ゲートウェイをデプロイした場所)のコードです。
ゲートウェイ インスタンスに API をデプロイすると、/hello
へのアクセスに使用する URL は次のようになります。
https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
API のデプロイの詳細については、API Gateway のデプロイモデルをご覧ください。
API 定義用の OpenAPI 仕様の作成について詳しくは、OpenAPI の概要をご覧ください。