Deploying Cloud Endpoints APIs on API Gateway
Cloud Endpoints is an API management system that helps you secure, monitor, analyze, and set quotas on your APIs. Endpoints uses the Extensible Service Proxy (ESP) or Extensible Service Proxy V2 Beta (ESPv2 Beta) to host your APIs.
When using Endpoints, you have three options for how you define your API:
- Cloud Endpoints for OpenAPI
- Cloud Endpoints for gRPC
- Cloud Endpoints Frameworks for the App Engine standard environment
Developing APIs with API Gateway
API Gateway supports APIs that are described using the OpenAPI specification, version 2.0. That means you can deploy your OpenAPI specs from Endpoints on API Gateway.
Deploying Endpoints OpenAPI specs on API Gateway
API Gateway supports the same OpenAPI spec definition format and options as supported by Cloud Endpoints for OpenAPI. That means you can use the same security, quota, and other definitions from your Endpoints OpenAPI specs to define an API in API Gateway.
The only difference between Endpoints and API Gateway is how they process the host
property in the OpenAPI spec definition:
- In Endpoints, set the
host
property to the hostname portion of the URL created when you deployed ESP, where ESP is the service used to host your Endpoints API. In API Gateway, omit the
host
or set it to the DNS name of the deployed API. API providers often set it to the DNS name when sharing the OpenAPI spec with their API consumers. However, API Gateway does not enforce the value of thehost
property.
For example, shown below is a portion of an OpenAPI spec used by Endpoints to define an API to access a backend service deployed on Cloud Run functions:
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: ...
For Endpoints, you:
Deploy ESP, which creates the URL that you then use to access APIs deployed to ESP. For example:
https://gateway-12345-uc.a.run.app
Edit the OpenAPI spec to set the
host
property to the domain name of the ESP URL. For examplehost: gateway-12345-uc.a.run.app
Deploy the OpenAPI spec to ESP.
Access your API by using the ESP URL. In the OpenAPI spec above, the
paths
element is set to/hello
so you can access this API by using the following URL:https://gateway-12345-uc.a.run.app/hello
As you can see, for Endpoints you must first deploy ESP to be able to set the value of the host
property.
To use this API definition to create an API config for API Gateway,
you can either delete the host
property entirely, or leave it in the file.
API Gateway does not enforce the value of the host
property.
The URL of the deployed gateway, and therefore the URL that your clients use to access your API, is defined when you create the gateway, in the form:
https://GATEWAY_ID-HASH.REGION_CODE.gateway.dev
where GATEWAY_ID is the name of the gateway, HASH is the unique hash code generated when you deployed the API, and REGION_CODE is the code for the GCP region where you deployed the gateway.
After you deploy an API to a gateway instance, the URL you use to access /hello
is then:
https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
For more on deploying APIs, see API Gateway Deployment Model.
For more on creating the OpenAPI spec for your API definition, see OpenAPI overview.