Guía de inicio rápido para implementar una API en API Gateway con Cloud Console

En esta página, se muestra cómo implementar una API en API Gateway para proteger el tráfico a un servicio de backend.

Sigue los pasos a continuación para implementar una API nueva a fin de acceder a un servicio de backend en Cloud Functions mediante Cloud Console. En esta guía de inicio rápido, también se describe cómo usar una clave de API para proteger tu backend del acceso no autorizado.

Antes de comenzar

  1. En Cloud Console, ve a la página API Gateway y selecciona o crea un proyecto de Google Cloud.

    Ir a la página API Gateway

  2. API Gateway requiere que habilites los siguientes servicios de Google:

    Nombre Título
    apigateway.googleapis.com API de API Gateway
    servicemanagement.googleapis.com API de Administración de servicios
    servicecontrol.googleapis.com API de Service Control

    Si no habilitaste estos servicios para el proyecto que seleccionaste, se te pedirá que lo hagas.

  3. Confirma que la facturación esté habilitada para tu proyecto.

    Aprende a habilitar la facturación

Implementa un backend de API

API Gateway se posiciona frente a un servicio de backend implementado y controla todas las solicitudes entrantes. En esta guía de inicio rápido, API Gateway enruta las llamadas entrantes a un backend de Cloud Function llamado helloGET que contiene la función que se muestra a continuació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: usa la herramienta de línea de comandos de gcloud para descargar el código de muestra de Cloud Functions y, luego, implementar el servicio de backend de Cloud Function.

Crea una definición de la API

API Gateway usa una definición de API para enrutar las llamadas al servicio de backend. Puedes usar una especificación de OpenAPI que contenga anotaciones especializadas para definir el comportamiento deseado de API Gateway. La especificación de OpenAPI para esta guía de inicio rápido contiene instrucciones de enrutamiento al backend de la función de Cloud Functions:

# 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://us-central1-PROJECT_ID.cloudfunctions.net/helloGET
      responses:
        '200':
          description: A successful response
          schema:
            type: string

A fin de usar la especificación de OpenAPI que se muestra arriba para definir tu API, haz lo siguiente:

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

  2. Copia y pega el contenido de la especificación de OpenAPI que se muestra arriba en el archivo recién creado.

  3. Edita el archivo de la siguiente manera:

    1. En el campo title, reemplaza API_ID por el nombre de tu API (que se creará en el siguiente paso) y reemplaza optional-string por la descripción breve que elijas. El valor de este campo se usa cuando se crean claves de API que otorgan acceso a esta API. Consulta los requisitos del ID de API para conocer los lineamientos que se aplican a los nombres de ID de API.
    2. En el campo address, reemplaza PROJECT_ID por el nombre de tu proyecto de Google Cloud.

Crea una puerta de enlace

Ahora estás listo para crear y, luego, implementar una puerta de enlace en API Gateway.

  1. Abre la página API Gateway en Cloud Console.

    Ir a la página API Gateway

  2. Haz clic en Crear puerta de enlace.

  3. En la sección API, haz lo siguiente:

    1. Puedes crear una nueva API o seleccionar una existente en el menú desplegable Seleccionar una API. Para este instructivo, selecciona Crear una API nueva.
    2. Ingresa el Nombre visible de tu API.
    3. Ingresa el ID de API para tu API.
    4. (Opcional) Agrega etiquetas a tu API con un formato de clave-valor. Para agregar más de una etiqueta, haz clic en Agregar etiqueta y, luego, ingresa valores adicionales.
  4. En la sección Configuración de API, haz lo siguiente:

    1. Puedes elegir crear una configuración de API nueva o seleccionar una existente en el menú desplegable Seleccionar una configuración. Para este instructivo, selecciona Crea una nueva configuración de API.
    2. Usa el navegador de archivos a fin de subir el openapi2-functions.yaml que se usa para definir la API.
    3. Ingresa un nombre visible para la configuración de la API.
    4. Selecciona una cuenta de servicio de la lista desplegable. La cuenta de servicio que selecciones se usará como identidad para API Gateway.

    5. Agrega etiquetas a tu configuración de la API con un formato de clave-valor (opcional). Para agregar más de una etiqueta, haz clic en Agregar etiqueta y, luego, ingresa valores adicionales.

  5. En la sección Detalles de la puerta de enlace, haz lo siguiente:

    1. Ingresa el nombre visible de la puerta de enlace. La URL a la puerta de enlace se genera de forma automática.
    2. Selecciona la ubicación de la puerta de enlace en el menú desplegable.
    3. Agrega etiquetas a tu puerta de enlace mediante un formato de clave-valor (opcional). Para agregar más de una etiqueta, haz clic en Agregar etiqueta y, luego, ingresa valores adicionales.
  6. Haz clic en Crear puerta de enlace.

Esto implementa la configuración de la API en una puerta de enlace recién creada. La implementación de una configuración de API en una puerta de enlace define una URL externa que los clientes de la API pueden usar para acceder a tu API.

La operación puede tardar varios minutos en completarse. Para verificar el estado del proceso de creación y de implementación, puedes hacer clic en el ícono de Notificación en la barra de navegación principal para mostrar una notificación de estado, como se muestra en la siguiente imagen:

Panel de notificaciones

Cuando el proceso finalice con éxito, podrás ver los detalles de la puerta de enlace en la página de destino de las puertas de enlace.

Ir a la página Puertas de enlace

Toma nota de la URL de la puerta de enlace. Se usa para probar tu implementación en el siguiente paso.

Prueba la implementación de tu API

Ahora puedes enviar solicitudes a tu API mediante la URL generada durante la implementación de la puerta de enlace.

En el navegador, ingresa la siguiente URL:

  • GATEWAY_URL especifica la URL de tu puerta de enlace implementada.
  • hello es la ruta de acceso especificada en la configuración de tu API.
https://GATEWAY_URL/hello

Por ejemplo:

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

Debería aparecer el mensaje Hello World! en tu navegador.

Creaste e implementaste una API Gateway con éxito.

Protege el acceso mediante una clave de API

Para proteger el acceso a tu backend de API, puedes generar una clave de API asociada con tu proyecto y otorgarle acceso para llamar a tu API. Consulta Restringe el acceso a la API con claves de API para obtener más información.

Si aún no tienes una clave de API asociada con el proyecto de Google Cloud que usas en esta guía de inicio rápido, puedes agregar una mediante los pasos que se indican en Crea una clave de API.

Para proteger el acceso a la puerta de enlace con una clave de API, haz lo siguiente:

  1. Habilita la compatibilidad con la clave de API para tu servicio:
    1. En Cloud Console, ve a API y servicios > Biblioteca.
    2. En la barra de búsqueda, ingresa el nombre del servicio administrado de la API que acabas de crear. Puedes encontrar este valor en la columna Servicio administrado de tu API en la página de destino de las API. Por ejemplo:
      my-api-123abc456def1.apigateway.my-project.cloud.goog
    3. En la página de destino de tu servicio, haz clic en Habilitar.
  2. Modifica la especificación de OpenAPI que se usa para crear la configuración de tu API a fin de incluir instrucciones a fin de aplicar una política de seguridad de validación de la clave de API en todo el tráfico. Agrega el tipo security y securityDefinitions como se muestra a continuación:
        # 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://us-central1.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"
    La securityDefinition configura tu API para que requiera una clave de API que se pasa como un parámetro de búsqueda llamado key cuando se solicita acceso a todas las rutas definidas en la especificación.
  3. Crea e implementa una configuración de API nueva en tu puerta de enlace existente:
    1. Ve a la página de destino de las API.

      Ir a la página de API

    2. Selecciona tu API de la lista para ver los detalles.
    3. Selecciona la pestaña Configs.
    4. Haz clic en el botón Subir de la página Configuración.
    5. Crea tu configuración de API nueva:
      1. Sube tu especificación de OpenAPI modificada mediante el navegador de archivos.
      2. Ingresa el nombre comercial de tu nueva configuración de API.
      3. Selecciona una cuenta de servicio de la lista desplegable. La cuenta de servicio que selecciones se usará como identidad para API Gateway.
      4. Agrega etiquetas a tu configuración de la API con un formato de clave-valor (opcional). Para agregar más de una etiqueta, haz clic en Agregar etiqueta y, luego, ingresa valores adicionales.
    6. Para implementar la nueva configuración de la API en tu puerta de enlace, selecciona la puerta de enlace de la lista desplegable.
    7. Haz clic en Crear.

Prueba tu clave de API

Una vez que hayas creado e implementado la API modificada, intenta realizarle una solicitud.

En el navegador, ingresa la siguiente URL:

  • GATEWAY_URL especifica la URL de tu puerta de enlace implementada.
  • hello es la ruta de acceso especificada en la configuración de tu API.
https://GATEWAY_URL/hello

Por ejemplo:

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

Esto debería generar el siguiente error:

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.

Ahora, en tu navegador, ingresa la siguiente URL, que es la siguiente:

  • GATEWAY_URL especifica la URL de tu puerta de enlace implementada.
  • hello es la ruta de acceso especificada en la configuración de tu API.
  • API_KEY especifica la clave de API que creaste en el paso anterior.
https://GATEWAY_URL/hello?key=API_KEY

Ahora deberías ver Hello World! en el navegador.

¡Felicitaciones! Protegiste correctamente el backend de tu API con una API Gateway. Ahora puedes comenzar a integrar nuevos clientes de API mediante la generación de claves de API adicionales.

Realice un seguimiento de la actividad de la API

  1. Consulta los gráficos de actividad de tu API en la página API Gateway en Cloud Console. Haz clic en tu API para ver los gráficos de actividad en la página Descripción general. Las solicitudes pueden tardar unos minutos en reflejarse en los gráficos.

  2. Consulta los registros de solicitud de tu API en la página Visor de registros. Se puede encontrar un vínculo a la página Explorador de registros en la página API Gateway en Cloud Console.

    Ir a la página API Gateway

    Una vez en la página API Gateway, haz lo siguiente:

    1. Selecciona la API que quieres ver.
    2. Haz clic en la pestaña Detalles.
    3. Haz clic en el vínculo en Registros.

Limpia

Para evitar que se apliquen cargos a la cuenta de Google Cloud por los recursos que usaste en esta guía de inicio rápido, puedes borrar la API y las puertas de enlace. También puedes borrar el proyecto de Google Cloud que se usó para este instructivo.

¿Qué sigue?