GSP872

Descripción general
API Gateway te permite proporcionar acceso seguro a tus servicios a través de una API de REST bien definida que es coherente en todos los servicios, sin importar la implementación del servicio. Una API coherente:
- Facilita a los desarrolladores de apps el consumo de tus servicios.
- Te permite cambiar la implementación del servicio de backend sin afectar la API pública.
- Te permite aprovechar las funciones de escalamiento, supervisión y seguridad integradas en Google Cloud.
En este lab, implementarás una API en API Gateway para proteger el tráfico a un servicio de backend.
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón para abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Activa Cloud Shell
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
-
Haz clic en Activar Cloud Shell
en la parte superior de la consola de Google Cloud.
-
Haz clic para avanzar por las siguientes ventanas:
- Continúa en la ventana de información de Cloud Shell.
- Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
- Haz clic en Autorizar.
Resultado:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project
Resultado:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: Para obtener toda la documentación de gcloud
, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.
Configura la región
Establece la región del proyecto para este lab:
gcloud config set compute/region {{{project_0.default_region | "REGION"}}}
Habilita las APIs necesarias
-
En el Menú de navegación (
) de la consola de Cloud, haz clic en APIs y servicios > Biblioteca.
-
Comienza a escribir “api gateway” en la barra de Búsqueda y, luego, selecciona el mosaico API Gateway API.
-
Ahora, haz clic en el botón Habilitar en la siguiente pantalla.
Tarea 1: Implementa el backend de una API
API Gateway se posiciona frente a un servicio de backend implementado y controla todas las solicitudes entrantes. En este lab, API Gateway enruta las llamadas entrantes al backend de una 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!');
};
- En la consola de Cloud, clona el repositorio de muestra de la Cloud Function:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
- Ve al directorio que contiene el código de muestra de Cloud Functions:
cd nodejs-docs-samples/functions/helloworld/helloworldGet
- Para implementar la función con un activador HTTP, ejecuta el siguiente comando en el directorio que contiene la función:
gcloud functions deploy helloGET --runtime nodejs20 --trigger-http --allow-unauthenticated --region {{{project_0.default_region | "REGION"}}}
- Si se te solicita, ingresa Y para habilitar la API.
Nota: Si recibes una solicitud para permitir el comando de gcloud con tus credenciales, haz clic en Autorizar. Implementar la Cloud Function tardará algunos minutos. Espera a que se complete la operación antes de continuar.
Advertencia: Si recibes un error como IamPermissionDeniedException, vuelve a ejecutar el comando anterior.
Haz clic en Revisar mi progreso para verificar el objetivo.
Implementar el backend de una API
Tarea 2: Prueba el backend de la API
- Cuando la función termine de implementarse, toma nota de la propiedad de la URL
httpsTrigger
o búscala con el siguiente comando:
gcloud functions describe helloGET --region {{{project_0.default_region | "REGION"}}}
El resultado debería ser similar a la URL que se muestra a continuación, en la que PROJECT_ID es un valor específico de tu proyecto.
- Configura tu PROJECT_ID como una variable:
export PROJECT_ID={{{project_0.project_id}}}
- Visita la URL para invocar la Cloud Function. Deberías ver el mensaje
Hello World!
como respuesta:
curl -v https://{{{project_0.default_region | "REGION"}}}-{{{project_0.project_id | "PROJECT_ID"}}}.cloudfunctions.net/helloGET
Haz clic en Revisar mi progreso para verificar el objetivo.
Probar el backend de la API
Crea la definición de API
API Gateway usa una definición de API para enrutar 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 Cloud Function.
- Desde Cloud Shell, vuelve a tu directorio principal:
cd ~
- Crea un archivo nuevo llamado
openapi2-functions.yaml
:
touch openapi2-functions.yaml
- Copia y pega el contenido de la especificación de OpenAPI que se muestra a continuación en el archivo recién creado:
# openapi2-functions.yaml
swagger: '2.0'
info:
title: API_ID description
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://{{{project_0.default_region | "REGION"}}}-{{{project_0.project_id | "PROJECT_ID"}}}.cloudfunctions.net/helloGET
responses:
'200':
description: A successful response
schema:
type: string
- Configura las siguientes variables de entorno:
export API_ID="hello-world-$(cat /dev/urandom | tr -dc 'a-z' | fold -w ${1:-8} | head -n 1)"
- Ejecuta los siguientes comandos para reemplazar las variables establecidas en el último paso en el archivo de especificación de OpenAPI:
sed -i "s/API_ID/${API_ID}/g" openapi2-functions.yaml
sed -i "s/PROJECT_ID/$PROJECT_ID/g" openapi2-functions.yaml
Tarea 3: Crea una puerta de enlace
Ahora estás listo para crear e implementar una puerta de enlace en API Gateway.
-
En la barra de búsqueda superior, ingresa API Gateway y selecciona esta opción.
-
Haz clic en Crear puerta de enlace. Luego, en la sección APIs, haz lo siguiente:
- Asegúrate de que la entrada Seleccionar una API esté configurada como Crear nueva API.
- En Nombre visible, ingresa
Hello World API
.
- Para ID de API, ejecuta el siguiente comando y obtén el ID de API una vez más. Luego, ingrésalo en el campo ID de API:
export API_ID="hello-world-$(cat /dev/urandom | tr -dc 'a-z' | fold -w ${1:-8} | head -n 1)"
echo $API_ID
- En la sección Configuración de API, haz lo siguiente:
- Asegúrate de que la entrada Seleccionar una configuración esté establecida en Crear una nueva configuración de API.
- Haz lo siguiente para subir el archivo
openapi2-functions.yaml
que creaste anteriormente.
- En Cloud Shell, ejecuta el siguiente comando:
cloudshell download $HOME/openapi2-functions.yaml
- Haz clic en Descargar.
Nota: El archivo openapi2-functions.yaml
ahora se descarga en tu máquina local.
- Selecciona Explorar y elige el archivo desde la ubicación de descarga del navegador:
- Ingresa
Hello World Config
en el campo Nombre visible.
- Asegúrate de que la entrada Seleccionar una cuenta de servicio esté configurada como Cuenta de servicio predeterminada de Compute Engine.
- En la sección Detalles de la puerta de enlace:
- Ingresa
Hello Gateway
en el campo Nombre visible.
- Establece el menú desplegable Ubicación en .
- Haz clic en Crear puerta de enlace.
Nota: La puerta de enlace tardará varios minutos en crearse (alrededor de 10). 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 imagen a continuación. Asegúrate de que el estado del ícono tenga una marca de verificación verde antes de continuar.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear una puerta de enlace
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.
- En Cloud Shell, ingresa el siguiente comando para recuperar la
GATEWAY_URL
de la API recién creada alojada por API Gateway:
export GATEWAY_URL=$(gcloud api-gateway gateways describe hello-gateway --location {{{project_0.default_region | "REGION"}}} --format json | jq -r .defaultHostname)
- Ejecuta el siguiente comando para asegurarte de que la variable de entorno GATEWAY_URL esté configurada:
echo $GATEWAY_URL
Si no lo está, significa que tendrás que esperar más tiempo para que se implemente API Gateway.
- Ejecuta el siguiente comando curl y valida que la respuesta devuelta sea
Hello World!
:
curl -s -w "\n" https://$GATEWAY_URL/hello
Tarea 4: Protege el acceso mediante una clave de API
Para proteger el acceso al backend de la API, genera una clave de API asociada con tu proyecto y otorga a esa clave acceso para llamar a tu API. Para crear una clave de API, debes hacer lo siguiente:
- En la consola de Cloud, ve a API y servicios (APIs & Services) > Credenciales (Credentials).
- Selecciona Crear credenciales (Create credentials) y, luego, Clave de API (API Key) en el menú desplegable.
Se mostrará la clave nueva en el cuadro de diálogo Se creó la clave de API.

Haz clic en Revisar mi progreso para verificar el objetivo.
Proteger el acceso mediante una clave de API
-
Copia la clave de API del diálogo y, luego, haz clic en cerrar.
-
Almacena el valor de la clave de API en Cloud Shell con el siguiente comando:
export API_KEY=REPLACE_WITH_COPIED_API_KEY
Ahora, habilita la compatibilidad con claves de API para tu servicio.
- En Cloud Shell, obtén el nombre del
Managed Service
que acabas de crear con el siguiente comando:
MANAGED_SERVICE=$(gcloud api-gateway apis list --format json | jq -r .[0].managedService | cut -d'/' -f6)
echo $MANAGED_SERVICE
- Luego, con el nombre
Managed Service
de la API que acabas de crear, ejecuta este comando para habilitar la compatibilidad con claves de API para el servicio:
gcloud services enable $MANAGED_SERVICE
Modifica la especificación de OpenAPI para aprovechar la seguridad de la clave de API
En esta sección, modifica la configuración de la API implementada para aplicar una política de seguridad de validación de claves de API en todo el tráfico.
- Agrega las secciones
security
y securityDefinitions
a un nuevo archivo llamado openapi2-functions2.yaml
, como se muestra a continuación:
touch openapi2-functions2.yaml
- Copia y pega el contenido de la especificación de OpenAPI que se muestra a continuación en el archivo recién creado:
# openapi2-functions.yaml
swagger: '2.0'
info:
title: API_ID description
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://{{{project_0.default_region | "REGION"}}}-{{{project_0.project_id | "PROJECT_ID"}}}.cloudfunctions.net/helloGET
security:
- api_key: []
responses:
'200':
description: A successful response
schema:
type: string
securityDefinitions:
api_key:
type: "apiKey"
name: "key"
in: "query"
- Ejecuta los siguientes comandos para reemplazar las variables establecidas en el último paso en el archivo de especificación de OpenAPI:
sed -i "s/API_ID/${API_ID}/g" openapi2-functions2.yaml
sed -i "s/PROJECT_ID/$PROJECT_ID/g" openapi2-functions2.yaml
- Descarga el archivo de especificación de API actualizado. Lo usarás para actualizar la configuración de Gateway en el siguiente paso:
cloudshell download $HOME/openapi2-functions2.yaml
- Haz clic en Descargar.
Tarea 5: Crea e implementa una nueva configuración de API en tu puerta de enlace existente
- Abre la página API Gateway en la consola de Cloud. (Haz clic en Menú de navegación > API Gateway).
- Selecciona tu API de la lista para ver los detalles.
- Selecciona la pestaña Puertas de enlace.
- Selecciona
Hello Gateway
en la lista de puertas de enlace disponibles.
- Haz clic en
Editar
en la parte superior de la página de puertas de enlace.
- En Configuración de API, cambia el menú desplegable a
Crear una nueva configuración de API
.
- Haz clic en Explorar en la casilla de entrada Subir un archivo de especificación de API y selecciona el archivo
openapi2-functions2.yaml
.
- Ingresa
Hello Config
en Nombre visible.
- Selecciona
Qwiklabs User Service Account
en Seleccionar una cuenta de servicio.
- Haz clic en Actualizar.
Nota: La operación de actualización de la puerta de enlace puede tardar unos 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 imagen a continuación. Asegúrate de que el estado del ícono tenga una marca de verificación verde antes de continuar.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear e implementar una nueva configuración de API en tu puerta de enlace existente
Tarea 6: Prueba llamadas con tu clave de API
- Para realizar una prueba con tu clave de API, ejecuta el siguiente comando:
export GATEWAY_URL=$(gcloud api-gateway gateways describe hello-gateway --location {{{project_0.default_region | "REGION"}}} --format json | jq -r .defaultHostname)
curl -sL $GATEWAY_URL/hello
Deberías ver una respuesta similar al siguiente error, ya que no se proporcionó una clave de API con la llamada curl
:
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.
- Ejecuta el siguiente comando curl con el parámetro de búsqueda
key
y usa la clave de API creada anteriormente para llamar a la API:
curl -sL -w "\n" $GATEWAY_URL/hello?key=$API_KEY
Si no tienes establecida la variable de entorno API_KEY
, puedes obtener tu clave de API desde el menú de la izquierda navegando a APIs y servicios > Credenciales. La clave estará disponible en la sección Claves de API.
La respuesta que devuelve la API ahora debería ser Hello World!
.
Nota: Es posible que debas ejecutar este comando más de una vez para obtener el resultado deseado.
Haz clic en Revisar mi progreso para verificar el objetivo.
Probar llamadas con tu clave de API
¡Felicitaciones!
Protegiste correctamente el backend de una API con API Gateway. Ahora puedes comenzar a integrar nuevos clientes de API mediante la generación de claves de API adicionales.
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Actualización más reciente del manual: 9 de octubre de 2024
Prueba más reciente del lab: 9 de octubre de 2024
Copyright 2025 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.