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

  1. En la Google Cloud consola, ve a la página Panel de control y selecciona o crea un Google Cloud proyecto.

    Ir al panel de control

  2. Confirma que la facturación está habilitada en tu proyecto.

    Habilitar la facturación

  3. Comprueba que Google Cloud CLI se ha descargado e instalado en tu máquina.

    Descargar gcloud CLI

  4. Actualiza los componentes de gcloud:

    gcloud components update
  5. 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.com
gcloud services enable servicemanagement.googleapis.com
gcloud 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.

  1. 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
  2. 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-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:
  backends:
    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

Para subir esta descripción de OpenAPI y crear una configuración de API con la CLI de gcloud, sigue estos pasos:

  1. En la línea de comandos, crea un archivo llamado openapi-functions.yaml.

  2. Copia y pega el contenido de la descripción de OpenAPI en el archivo que acabas de crear.

  3. Edita el archivo de la siguiente manera:

    1. En el campo title, sustituye API_ID por el nombre de tu API y