Comienza a usar API Gateway y App Engine

En esta página, se muestra cómo configurar API Gateway para administrar y proteger un servicio de backend de App Engine.

Lista de tareas

Usa la siguiente lista de tareas mientras trabajas en el instructivo. Todas las tareas son necesarias para implementar una puerta de enlace de API para tu servicio de backend de App Engine.

  1. Crea o selecciona un proyecto de Google Cloud.
  2. Si no has implementado tu propio App Engine, implementa una app de ejemplo. Consulta Antes de comenzar.
  3. Habilita los servicios de API Gateway necesarios.
  4. Configura IAP para proteger tu app. Consulta la sección sobre cómo configurar IAP.
  5. Crea una especificación de OpenAPI que describa tu API y configura las rutas a App Engine. Consulta Crea una configuración de API.
  6. Implementa una API Gateway con tu configuración de API. Consulta Implementa una API Gateway.
  7. Realiza seguimiento de la actividad de tus apps. Consulta Cómo realizar un seguimiento de la actividad de la API.
  8. Evita que se generen cargos en tu cuenta de Google Cloud. Consulta Cómo realizar una limpieza.

Antes de comenzar

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

    Ir a la página Panel

  2. Asegúrate de tener habilitada la facturación para tu proyecto.

    Habilitar la facturación

  3. Anota el ID del proyecto que deseas usar para este instructivo. En el resto de esta página, este ID del proyecto se denomina PROJECT_ID.

  4. Descarga e instala Google Cloud CLI.

    Descarga la CLI de gcloud

  5. Actualiza los componentes de gcloud:

    gcloud components update
  6. Configura el proyecto predeterminado. Reemplaza PROJECT_ID por el ID de tu proyecto de Google Cloud:

    gcloud config set project PROJECT_ID

  7. Si no has implementado tu propia app de App Engine, sigue los pasos de la guía de inicio rápido de App Engine en tu idioma para usar Google Cloud CLI y seleccionar o crear un proyecto de Google Cloud, y, luego, implementar una app de muestra. Toma nota de la URL de la app, así como de la región y el ID del proyecto en los que se implementa la app.

Habilita los servicios obligatorios

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

Para confirmar que los servicios obligatorios están habilitados, haz lo siguiente:

gcloud services list

Si no ves los servicios necesarios que se incluyeron en la lista, habilítalos:

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 Servicios de gcloud.

Configura IAP para proteger tu app

Para proteger tu app de App Engine, debes usar el Identity Aware Proxy (IAP) a fin de asegurarte de que las solicitudes se autentiquen. Este proceso incluye especificar a los miembros a los que se les debe otorgar el rol IAP-secured Web App User necesario para el proyecto.

Sigue los pasos para habilitar IAP y asegurarte de poder acceder a tu aplicación.

Crea una configuración de API

Antes de que se pueda usar API Gateway para administrar el tráfico al backend de App Engine implementado, necesita una configuración de API.

Puedes crear una configuración de API con una especificación de OpenAPI que contenga anotaciones especializadas para definir el comportamiento elegido de API Gateway. Deberás agregar un campo específico de Google que contenga la URL de cada app de App Engine a fin de que API Gateway tenga la información necesaria para invocar una app.

  1. Crea un archivo de texto denominado openapi2-appengine.yaml. (Para mayor comodidad, esta página hace referencia a la especificación de OpenAPI con ese nombre de archivo, pero puedes nombrarlo de otra manera si lo prefieres).
  2. Incluye cada una de tus apps en la sección paths del archivo openapi2-appengine.yaml, como se muestra a continuación:
    # openapi2-appengine.yaml
    swagger: '2.0'
    info:
      title: API_ID optional-string
      description: Sample API on API Gateway with an App Engine backend
      version: 1.0.0
    schemes:
      - https
    produces:
      - application/json
    paths:
      /hello:
        get:
          summary: Greet a user
          operationId: hello
          x-google-backend:
            address: APP_URL
            jwt_audience: IAP_CLIENT_ID
          responses:
            '200':
              description: A successful response
              schema:
                type: string
  3. En el campo title, reemplaza API_ID por el nombre de tu API y reemplaza optional-string por una breve descripción de tu elección. Si tu API aún no existe, el comando para crear la configuración de API también creará la API con el nombre que especifiques. El valor del campo title se usa cuando se acuñan claves de API que otorgan acceso a esta API. Consulta los requisitos de ID de API para conocer los lineamientos de nombres de las APIs.
  4. En el campo address de la sección x-google-backend, reemplaza APP_URL por la URL real de tu servicio de App Engine (la ruta de acceso completa de la API llamada). Por ejemplo, https://myapp.an.r.appspot.com/hello.

    Reemplaza IAP_CLIENT_ID por el ID de cliente de OAuth que creaste cuando configuraste IAP.

  5. Ingresa el siguiente comando, donde:
    • CONFIG_ID especifica el nombre de la configuración de tu API.
    • API_ID especifica el nombre de tu API. Si la API aún no existe, este comando la creará.
    • PROJECT_ID especifica el nombre del proyecto de Google Cloud.
    • SERVICE_ACCOUNT_EMAIL especifica la cuenta de servicio que se usa para firmar tokens para backends con autenticación configurada.
    gcloud api-gateway api-configs create CONFIG_ID \
      --api=API_ID --openapi-spec=openapi2-appengine.yaml \
      --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

    Esta operación puede tardar varios minutos en completarse, ya que la configuración de la API se propaga a los sistemas downstream. La creación de una configuración de API compleja puede tardar hasta diez minutos en completarse correctamente.

  6. Después de crear la configuración de la API, puedes ver sus detalles. Para ello, ejecuta este comando:
    gcloud api-gateway api-configs describe CONFIG_ID \
      --api=API_ID --project=PROJECT_ID

Implementa una API Gateway

Ahora puedes implementar tu API en API Gateway. La implementación de una API en API Gateway también define una URL externa que los clientes de API pueden usar para acceder a la API.

Ejecuta el comando siguiente para implementar la configuración de la API que acabas de crear en API Gateway:

gcloud api-gateway gateways create GATEWAY_ID \
  --api=API_ID --api-config=CONFIG_ID \
  --location=GCP_REGION --project=PROJECT_ID

Donde:

  • GATEWAY_ID especifica el nombre de la puerta de enlace.
  • API_ID especifica el nombre de la API de API Gateway asociada a esta puerta de enlace.
  • CONFIG_ID especifica el nombre de la configuración de API implementada en la puerta de enlace.
  • GCP_REGION es la región de Google Cloud para la puerta de enlace implementada.

  • PROJECT_ID especifica el nombre del proyecto de Google Cloud.

Cuando el proceso finalice correctamente, puedes usar el siguiente comando para ver los detalles de la puerta de enlace:

gcloud api-gateway gateways describe GATEWAY_ID \
  --location=GCP_REGION --project=PROJECT_ID

Ten en cuenta el valor de la propiedad defaultHostname en el resultado de este comando. Esta es la parte del nombre de host de la URL de la puerta de enlace que usas 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 después de la implementación de tu puerta de enlace.

Ingresa el siguiente comando curl, donde:

  • DEFAULT_HOSTNAME especifica la parte del nombre de host de la URL de la puerta de enlace implementada. El valor de defaultHostname se puede encontrar en el resultado del comando gateways describe que se muestra arriba.
  • hello es la ruta de acceso que se especifica en la configuración de la API.
curl https://DEFAULT_HOSTNAME/hello

Por ejemplo:

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

Debería ver el siguiente resultado:

My-AppEngineApp: Access denied for user gateway-1a2b3c@04d5e6f35FgdsT73dFrty-tp.iam.gserviceaccount.com requesting https://my-project.appspot.com/helloGET. If you should have access, contact myldap@google.com and include the full text of this message.

¡Listo! La puerta de enlace administra el acceso a tu servicio de backend de App Engine. Para otorgar acceso a tu app de App Engine, deberás configurar una cuenta de servicio con los permisos correctos para tu puerta de enlace.

Realiza un seguimiento de la actividad de la API

  1. Consulta los gráficos de actividad de tu API en la página API Gateway de la consola de Google Cloud. 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. Puedes encontrar un vínculo a la página Explorador de registros en la página API Gateway de la consola de Google Cloud.

    Ir a la página API Gateway

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

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

Realiza una limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta guía de inicio rápido, puedes hacer lo siguiente:

Como alternativa, también puedes borrar el proyecto de Google Cloud que se usó para este instructivo.