Guía de inicio rápido: proteger el tráfico de un servicio con la CLI de gcloud
En esta página se muestra cómo desplegar una API en API Gateway para proteger el tráfico en un servicio de backend.
Sigue estos pasos para desplegar una nueva API que acceda a un servicio de backend en funciones de Cloud Run mediante la CLI de Google Cloud. En esta guía de inicio rápido también se describe cómo usar una clave de API para proteger tu backend frente a accesos no autorizados.
Antes de empezar
En la Google Cloud consola, ve a la página Panel de control y selecciona o crea un Google Cloud proyecto.
Confirma que la facturación está habilitada en tu proyecto.
Comprueba que Google Cloud CLI se ha descargado e instalado en tu máquina.
Actualiza los componentes de
gcloud:gcloud components update
Define el proyecto predeterminado. Sustituye PROJECT_ID por el ID de tu proyecto. Google Cloud
gcloud config set project PROJECT_ID
Habilitar los servicios necesarios
API Gateway requiere que habilites los siguientes servicios de Google:
| Nombre | Título |
|---|---|
apigateway.googleapis.com |
API de API Gateway |
servicemanagement.googleapis.com |
API Service Management |
servicecontrol.googleapis.com |
API Service Control |
Usa los siguientes comandos para habilitar estos servicios:
gcloud services enable apigateway.googleapis.comgcloud services enable servicemanagement.googleapis.comgcloud services enable servicecontrol.googleapis.com
Para obtener más información sobre los servicios de gcloud, consulta los servicios de gcloud.
Desplegar un backend de API
API Gateway se encuentra delante de un servicio de backend implementado y gestiona todas las solicitudes entrantes. En esta guía de inicio rápido, API Gateway dirige las llamadas entrantes a un backend de función de Cloud Run llamado helloGET que contiene la siguiente función:
/** * 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!'); };
Sigue los pasos de la guía de inicio rápido para usar la CLI de Google Cloud para descargar el código de ejemplo de Cloud Run functions y desplegar el servicio de backend de Cloud Run functions.
Crear una API
Ahora ya puedes crear tu API en API Gateway.
Introduce el siguiente comando, donde:
- API_ID especifica el nombre de tu API. Consulta los requisitos de ID de API para ver las directrices de nomenclatura de las APIs.
gcloud api-gateway apis create API_ID
Por ejemplo:
gcloud api-gateway apis create my-api
- API_ID especifica el nombre de tu API. Consulta los requisitos de ID de API para ver las directrices de nomenclatura de las APIs.
Una vez completado el proceso, puedes usar el siguiente comando para ver los detalles de la nueva API:
gcloud api-gateway apis describe API_ID
Por ejemplo:
gcloud api-gateway apis describe my-api
Este comando devuelve lo siguiente:
createTime: '2020-02-29T21:52:20.297426875Z' displayName: my-api managedService: my-api-123abc456def1.apigateway.my-project.cloud.goog name: projects/my-project/locations/global/apis/my-api state: ACTIVE updateTime: '2020-02-29T21:52:20.647923711Z'
Anota el valor de la propiedad managedService. Este valor se usa para habilitar tu API
en un paso posterior.
Crear una configuración de API
Para poder usar API Gateway y gestionar el tráfico a tu backend de API implementado, necesitas una configuración de API.
Puedes crear una configuración de API con una descripción de OpenAPI que contenga anotaciones especializadas para definir el comportamiento de API Gateway que elijas. Para obtener más información sobre las extensiones de OpenAPI admitidas, consulta lo siguiente:
La descripción de OpenAPI que se usa en esta guía de inicio rápido contiene instrucciones de enrutamiento a nuestro backend de funciones de Cloud Run:
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-