Empezar a usar API Gateway y App Engine

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

Lista de tareas

Usa la siguiente lista de tareas mientras sigues el tutorial. Todas las tareas son obligatorias para desplegar una pasarela de API en tu servicio de backend de App Engine.

  1. Crea o selecciona un Google Cloud proyecto.
  2. Si no has implementado tu propia aplicación App Engine, implementa una aplicación de ejemplo. Consulta la sección Antes de empezar.
  3. Habilita los servicios de API Gateway necesarios.
  4. Configura IAP para proteger tu aplicación. Consulta Configurar IAP.
  5. Crea una especificación de OpenAPI que describa tu API y configura las rutas a tu App Engine. Consulta Crear una configuración de API.
  6. Despliega una pasarela de API con tu configuración de API. Consulta Desplegar una API Gateway.
  7. Monitoriza la actividad de tus aplicaciones. Consulta Monitorizar la actividad de las APIs.
  8. Evita que se te apliquen cargos en tu cuenta de Google Cloud . Consulta Liberar espacio.

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 a la página Panel de control

  2. Comprueba que la facturación esté habilitada en tu proyecto.

    Habilitar la facturación

  3. Anota el ID del proyecto que quieras usar en este tutorial. En el resto de esta página, este ID de proyecto se denomina PROJECT_ID.

  4. Descarga e instala Google Cloud CLI.

    Descargar gcloud CLI

  5. Actualiza los componentes de gcloud:

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

    gcloud config set project PROJECT_ID

  7. Si no has desplegado tu propia aplicación de App Engine, sigue los pasos que se indican en la guía de inicio rápido de App Engine de tu idioma para usar la CLI de Google Cloud y seleccionar o crear un proyecto de Google Cloud y desplegar una aplicación de ejemplo. Anota la URL de la aplicación, así como la región y el ID del proyecto en los que se ha desplegado.

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

Para confirmar que los servicios necesarios están habilitados, sigue estos pasos:

gcloud services list

Si no ves los servicios necesarios, 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 los servicios de gcloud.

Configurar IAP para proteger tu aplicación

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

Sigue los pasos para habilitar las compras en la aplicación y asegúrate de que puedes iniciar sesión en tu aplicación.

Crear una configuración de API

Para poder usar API Gateway para gestionar el tráfico a tu 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 de API Gateway que elijas. Deberá añadir un campo específico de Google que contenga la URL de cada aplicación de App Engine para que API Gateway tenga la información que necesita para invocar una aplicación.

  1. Crea un archivo de texto llamado openapi2-appengine.yaml. Por comodidad, en esta página se hace referencia a la especificación de OpenAPI con ese nombre de archivo, pero puedes darle otro nombre si lo prefieres.
  2. Incluya cada una de sus aplicaciones en la sección paths del archivo openapi2-appengine.yaml, tal 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, sustituye API_ID por el nombre de tu API y 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 la API también creará la API con el nombre que especifiques. El valor del campo title se usa al generar claves de API que conceden acceso a esta API. Consulta los requisitos de ID de API para ver las directrices de nomenclatura de las APIs.
  4. En el campo address de la sección x-google-backend, sustituye APP_URL por la URL real de tu servicio de App Engine (la ruta completa de la API llamada). Por ejemplo, https://myapp.an.r.appspot.com/hello.

    Sustituye IAP_CLIENT_ID por el ID de cliente de OAuth que creaste al configurar IAP.

  5. Introduce el siguiente comando, donde:
    • CONFIG_ID especifica el nombre de la configuración de la API.
    • API_ID especifica el nombre de tu API. Si la API aún no existe, este comando la crea.
    • PROJECT_ID especifica el nombre de tu Google Cloud proyecto.
    • SERVICE_ACCOUNT_EMAIL especifica la cuenta de servicio que se usa para firmar tokens de back-ends con la 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 posteriores. La creación de una configuración de API compleja puede tardar hasta diez minutos en completarse correctamente.

  6. Una vez creada la configuración de la API, puede ver sus detalles ejecutando este comando:
    gcloud api-gateway api-configs describe CONFIG_ID \
      --api=API_ID --project=PROJECT_ID

Desplegar una pasarela de APIs

Ahora puedes desplegar tu API en API Gateway. Al implementar una API en API Gateway, también se define una URL externa que los clientes de la API pueden usar para acceder a ella.

Ejecuta el siguiente comando para desplegar la configuración de 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 pasarela.
  • API_ID especifica el nombre de la API de API Gateway asociada a esta pasarela.
  • CONFIG_ID especifica el nombre de la configuración de API desplegada en la pasarela.
  • GCP_REGION es la Google Cloud región de la pasarela implementada.

  • PROJECT_ID especifica el nombre de tu Google Cloud proyecto.

Cuando se haya completado correctamente, puedes usar el siguiente comando para ver los detalles de la pasarela:

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

Anota 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 pasarela que usarás para probar tu implementación en el siguiente paso.

Probar el despliegue de la API

Ahora puedes enviar solicitudes a tu API mediante la URL generada al desplegar tu pasarela.

Introduce el siguiente comando curl, donde:

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

Por ejemplo:

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

Deberías ver este 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! Tu gateway gestiona el acceso a tu servicio de backend de App Engine. Para conceder acceso a tu aplicación de App Engine, debes configurar una cuenta de servicio con los permisos correctos para tu pasarela.

Monitorizar la actividad de la API

  1. Consulta los gráficos de actividad de tu API en la página API Gateway de laGoogle Cloud consola. Haz clic en tu API para ver sus gráficos de actividad en la página Vista general. Las solicitudes pueden tardar unos instantes en reflejarse en los gráficos.

  2. Consulta los registros de solicitudes de tu API en la página Explorador de registros. Puedes encontrar un enlace a la página Explorador de registros en la página API Gateway de la consolaGoogle Cloud .

    Ir a la página Pasarela de APIs

    Una vez que estés en la página de API Gateway:

    1. Selecciona la API que quieras ver.
    2. Haga clic en la pestaña Detalles.
    3. Haz clic en el enlace de Registros.

Limpieza

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

También puedes eliminar el Google Cloud proyecto que has usado en este tutorial.