En este lab, implementarás la API de la aplicación de Quiz en Google Compute Engine y usarás Cloud Endpoints para proporcionar funcionalidad de supervisión.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
Crear una especificación de Open API desde la API de REST existente de la aplicación de Quiz
Implementar la especificación como un extremo de la nube
Aprovisionar una instancia de Compute Engine con el proxy de servicio extensible para alojar la API de Cloud Endpoints
Configuración y requisitos
En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.
Accede a Qwiklabs desde una ventana de incógnito.
Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.
Cuando esté listo, haga clic en Comenzar lab.
Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.
Haga clic en Abrir Google Console.
Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
Si usa otras credenciales, se generarán errores o incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperación.
Activa Google Cloud Shell
Google 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.
Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.
Haz clic en Continuar.
El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:
gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.
Puedes solicitar el nombre de la cuenta activa con este comando:
En esta sección, accederás a Cloud Shell, clonarás el repositorio de Git que contiene la aplicación de Quiz, configurarás las variables de entorno y ejecutarás la aplicación.
Clona el código fuente en Cloud Shell
Para clonar el repositorio para la clase, ejecuta el siguiente comando:
Configura y ejecuta la aplicación del caso de éxito
Cambia al directorio que contenga los archivos de muestra de este lab:
cd ~/cloudendpoints/start
Para reemplazar la región predeterminada de un archivo por la región asignada por un lab, ejecuta los siguientes comandos:
export APP_REGION={{{project_0.startup_script.app_gcp_region | APP_REGION}}}
export REGION={{{project_0.default_region | REGION}}}
sed -i 's/us-central1/'"$REGION"'/g' prepare_environment.sh
sed -i 's/us-central/'"$APP_REGION"'/g' prepare_environment.sh
Para configurar la aplicación de Quiz, ejecuta el siguiente comando:
. prepare_environment.sh
Si ves el mensaje Bind the role to service account? (Y/n)?, ingresa n.
Nota: Este archivo de secuencia de comandos hace lo siguiente:
Crea una aplicación de App Engine.
Crea la base de datos de Datastore.
Exporta las variables de entorno GCLOUD_PROJECT y GCLOUD_BUCKET.
Ejecuta npm install.
Crea entidades en Cloud Datastore.
Instala una herramienta de Open API generator, api2swagger.
Imprime el ID del proyecto de Google Cloud.
Si ves ERROR: (gcloud.functions.deploy), vuelve a intentar el comando gcloud functions deploy completo que se ve luego de ejecutar cat ./prepare_environment.sh.
Puedes ejecutar gcloud functions list para verificar que la función se creó y que está disponible.
Nota: Las advertencias generadas por la instalación de Open API generator se pueden ignorar de forma segura en este lab.
Para ejecutar la aplicación web, usa el siguiente comando:
npm start
Ahora la aplicación se está ejecutando en Cloud Shell.
En Cloud Shell, haz clic en Vista previa en la Web > Vista previa en el puerto 8080 para obtener una vista previa de la aplicación de Quiz.
Modifica la URL agregando /api/quizzes/places al final del nombre de host. Reemplaza /?authuser=0 con /api/quizzes/places.
Nota: Deberías ver que se devuelven datos JSON de la API de la aplicación de Quiz que corresponden a las preguntas sobre lugares del cuestionario "places".
Toma nota de la URL de API completa para usarla más adelante en este lab y guarda la URL para poder pegarla en un comando de la siguiente sección.
Nota:
la URL tendrá un aspecto similar al siguiente: https://8080-cs-***.cloudshell.dev/api/quizzes/places
Haz clic en Revisar mi progreso para verificar el objetivo.
Configurar y ejecutar la aplicación del caso de éxito
Tarea 2. Genera una especificación de Open API
En esta sección, generarás una especificación de Open API que formará la base para implementar tu extremo de nube.
Crea una especificación de Open API
Abre una segunda ventana de Cloud Shell.
Haz clic en el signo más para abrir una nueva pestaña en la terminal.
Para cambiar el directorio de la carpeta de trabajo de Cloud Endpoints usa el comando siguiente:
cd ~/cloudendpoints/start/endpoint
Actualiza la variable de entorno PATH con el objetivo de establecer la ruta de acceso para el comando api2swagger:
export PATH=$PATH:`npm root -g`/api2swagger/bin
Para instalar el paquete de Python api2swagger, usa el siguiente comando:
npm install -g api2swagger
Para generar la especificación de Open API, ejecuta el comando siguiente, reemplazando [API_URL_FROM_CLIPBOARD] por la URL de API guardada del paso anterior del formulario https://8080-cs-.../api/quizzes/places:
api2swagger -e [API_URL_FROM_CLIPBOARD] -o ./quiz-api.json
Nota: La herramientaapi2swagger realizará la solicitud a la API y mostrará una serie de instrucciones. Si no completas el reemplazo adecuado, se mostrará el error Nombre de host no válido.
Ingresa las respuestas a las instrucciones de api2swagger con la siguiente tabla:
Instrucción
Respuesta
¿Título de Swagger Spec?
API de Quite Interesting Quiz
¿Descripción de Swagger Spec?
Una API para Quite Interesting Quiz
URL de las Condiciones del Servicio
(Presiona la tecla Intro)
¿Versión de tu programa API?
(Presiona la tecla Intro)
¿Nombre de contacto?
(Presiona la tecla Intro)
¿URL de contacto?
(Presiona la tecla Intro)
¿Correo electrónico de contacto?
(Presiona la tecla Intro)
¿Nombre de la licencia?
(Presiona la tecla Intro)
¿URL de la licencia?
(Presiona la tecla Intro)
¿Tu API admite http?
Y
¿Elegir Ruta base de tu API?
Usa las flechas hacia arriba y hacia abajo para elegir:
❯ /api/quizzes
(Presiona la tecla Intro)
¿Explicación detallada del comportamiento de la operación?
Obtiene preguntas de un cuestionario
¿Breve resumen de lo que hace la operación?
Obtén preguntas de cuestionario
¿Documentación externa adicional para esta operación?
(Presiona la tecla Intro)
¿Cadena única para identificar la operación?
getQuizQuestions
¿Lista de etiquetas para el control de la documentación de la API?
(Presiona la tecla Intro)
¿La ruta de acceso a la API tiene algún parámetro dinámico?
Y (Presiona la tecla Intro)
¿Elige parámetros dinámicos en la URL?
Usa las flechas hacia arriba y hacia abajo para moverte a: ❯◉ places
Luego presiona la barra espaciadora para elegir lugares y, luego, Intro
¿Nombre del parámetro URL?
quizName
¿Descripción del parámetro URL?
El nombre del cuestionario
¿Tipo del parámetro de la consulta?
Usa las flechas hacia arriba y hacia abajo para elegir: ❯ cadena
(Presiona la tecla Intro)
Nota: La herramienta api2swagger mostrará el resultado de la especificación de Open API.
Edita la especificación de Open API
En Cloud Shell, haz clic en Abrir editor.
Quizás debas hacer clic en Abrir en una ventana nueva si el bloqueo de cookies de terceros está habilitado.
Navega a cloudendpoints/start/endpoint.
En el Editor de código de Cloud Shell, abre quiz-api.json.
Reemplaza el valor de la clave “host” por un nombre de host con una cadena de forma quiz-api.endpoints.[Project-ID].cloud.goog.
Nota: En el siguiente ejemplo se muestra la modificación en la línea host.
Asegúrate de reemplazar [GCP-Project-ID] con tu ID del proyecto de Google Cloud.
El ID del proyecto de Google Cloud se puede encontrar en el panel izquierdo de las instrucciones de lab debajo de tus credenciales.
endpoint/quiz-api.json
{
"swagger": "2.0",
"host": "quiz-api.endpoints.qwiklabs-gcp-XX-XXXX.cloud.goog",
"schemes": [
"https",
"http"
],
Nota: Cuando implementes tu especificación de Open API en la siguiente sección, la API de Service Management usará el valor host de tu archivo de configuración de implementación para crear un servicio de Cloud Endpoints nuevo con el nombre quiz-api.endpoints.[PROJECT-ID].cloud.goog (si no existe) y luego configurará el servicio según tu archivo de configuración de OpenAPI.
Cloud Endpoints usa nombres compatibles con DNS para identificar servicios de manera inequívoca. Debido a que se garantiza que los proyectos en Google Cloud tengan un nombre global único, puedes usar el nombre de tu proyecto para crear un nombre de servicio de API único. También puedes asignar tu propio nombre de DNS a tu API.
Guarda el archivo.
Implementa la especificación de API en Cloud Endpoints
Haz clic en Abrir terminal para volver a Cloud Shell.
Para implementar la especificación de Open API como un extremo de la nube, ejecuta el siguiente comando en la ventana de Cloud Shell:
gcloud endpoints services deploy quiz-api.json
Si ves un error como el siguiente: PERMISSION_DENIED: Ownership for domain name, asegúrate de que tu host en el archivo quiz-api.json coincida con el formato sugerido, incluido tu ID del proyecto correcto.
Nota: La definición de service toma unos minutos en implementarse.
Verás una advertencia sobre que la API está disponible para todos los clientes sin proporcionar una clave.
Para ver el nombre de configuración de Open API, ejecuta el siguiente comando:
gcloud endpoints configs list --service="quiz-api.endpoints.$GOOGLE_CLOUD_PROJECT.cloud.goog"
Observa que se insertó el ID del proyecto. Puedes copiar el service del resultado de tu comando deploy.
Nota: Se devolverá la configuración del servicio, incluido CONFIG_ID y SERVICE_NAME. Necesitarás ambos valores en la próxima sección.
Tarea 3: Implementa el backend de la API
En esta sección, aprovisionarás una instancia de Compute Engine para que ejecute la implementación de API y el proxy de servicio extensible de Cloud Endpoints.
Crea una instancia de Compute Engine
En el menú de navegación de la consola de Cloud (☰), haz clic en Compute Engine > Instancias de VM.
Para crear una instancia nueva, haz clic en Crear instancia.
En la página Configuración de la máquina, ingresa los valores para los siguientes campos:
Campo
Valor
Nombre
endpoint-host
Región
Zona
Serie
E2
Tipo de máquina > Con núcleo compartido
e2-small
Haz clic en SO y almacenamiento.
Haz clic en Cambiar para comenzar a configurar el disco de arranque y selecciona los siguientes valores:
Sistema operativo: Debian
Versión: Debian GNU/Linux 11 (bullseye)
Haz clic en Herramientas de redes.
En Firewall, haz clic en Permitir tráfico HTTP.
Haz clic en Seguridad.
En Permisos de acceso, haz clic en Permitir el acceso total a todas las APIs de Cloud.
Haz clic en Configuración avanzada.
En Metadatos, haz clic en + Agregar elemento dos veces.
Ingresa los siguientes valores de metadatos:
endpoints-service-config-id
Usa CONFIG_ID para el extremo con el formato: yyyy-mm-ddr0
endpoints-service-name
Usa el valor SERVICE_NAME para el extremo con el formato:
quiz-api.endpoints.<Project-ID>.cloud.goog
Haz clic en Crear.
Espera que se complete el aprovisionamiento de la VM.
Nota: La instancia de Compute Engine tardará alrededor de 20 segundos para aprovisionar con Debian.
Instala y ejecuta el backend de API
Regresa a la ventana de Cloud Shell.
Para asegurarte de que el directorio de trabajo está configurado en la carpeta endpoint, ejecuta el siguiente comando:
cd ~/cloudendpoints/start/endpoint/
Para copiar los archivos de origen de la aplicación desde Cloud Shell a endpoint-host, ejecuta el siguiente comando:
gcloud compute scp ./quiz-api endpoint-host:~/ --recurse --zone={{{project_0.default_zone | ZONE}}}
Nota: Es posible que se te solicite crear una clave SSH. Puedes presionar la tecla INTRO para cada instrucción, incluida la Y para crear el directorio .ssh.
Copiar los archivos puede tomar algunos segundos.
Regresa a la consola de Google Cloud.
En la página de Compute Engine, haz clic en SSH para conectarte a la máquina virtual endpoint-host.
Nota: Quizá tengas que hacer clic dos veces si usas un bloqueador de ventanas emergentes. Tomará algunos segundos establecer la conexión SSH.
En la ventana SSH endpoint-host, instala los requisitos previos del software:
En la segunda ventana de SSH endpoint-host, ejecuta el siguiente comando para editar el archivo de configuración nginx:
sudo nano /etc/default/nginx
Para modificar el archivo, agrega la siguiente declaración luego de la configuración existente:
PORT=80
Guarda el archivo (presiona Ctrl+O y, luego, Intro).
Sal de nano (presiona Ctrl+X).
Para reiniciar nginx, ejecuta el siguiente comando:
sudo service nginx restart
Tarea 4: Prueba y modifica Cloud Endpoint
En esta sección, verificarás la implementación del extremo y modificarás la configuración para permitir la entrega con un nombre de host en vez de una dirección IP.
Invoca el extremo de la nube con la dirección IP
Regresa a la consola de Cloud Platform > Compute Engine.
Para iniciar una ventana del navegador, haz clic en la dirección IP externa de la máquina virtual endpoint-host.
Nota: Un mensaje de JSON que informa Este método no existe aparecerá en la ventana nueva del navegador. Este es un comportamiento esperado, ya que no asociaste un método con “/”. No hace falta tomar una medida correctiva.
Agrega /api/quizzes/places al final de la URL.
Nota: Deberías ver que se muestran datos JSON de la API de quiz.
En el Menú de navegación de la consola de Google Cloud, haz clic en Extremos y después haz clic en tu extremo implementado.
Nota: Deberías ver una página de supervisión para el extremo de la API de Quiz. Luego de unos minutos, deberías ver la solicitud que le hiciste al extremo.
Modifica y vuelve a implementar la configuración del extremo de la nube
Regresa al editor de código Cloud Shell y elige el archivo quiz-api.json.
Para permitir que se acceda a la API con el nombre de host Cloud Endpoint en vez de la dirección IP, agrega la clave y valor “x-google-endpoints” que se muestra en el siguiente fragmento del archivo.
Para volver a implementar la API, regresa a la ventana de Cloud Shell y ejecuta el siguiente comando:
gcloud endpoints services deploy quiz-api.json
Abre una pestaña del navegador nueva y navega a http://quiz-api.endpoints.<Project-ID>.cloud.goog/api/quizzes/gcp.
Nota: Deberías ver datos JSON del cuestionario de Google Cloud.
Tarea 5. Supervisa la API
En esta sección revisarás los resultados de supervisión de tu API.
Examina la API en la consola
Regresa a la consola de Google Cloud. En el Menú de navegación, haz clic en Extremos y, luego, en tu extremo implementado.
Nota: Deberías ver una página de resumen en la API de Quiz.
Tómate unos minutos para revisar los gráficos de solicitudes, latencia y errores.
Nota: Deberías ver que los gráficos de supervisión te permiten observar el rendimiento de tu API mientras ejecuta solicitudes de los clientes.
Finalice su lab
Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.
Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.
La cantidad de estrellas indica lo siguiente:
1 estrella = Muy insatisfecho
2 estrellas = Insatisfecho
3 estrellas = Neutral
4 estrellas = Satisfecho
5 estrellas = Muy satisfecho
Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.
Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.
Copyright 2024 Google LLC. Todos los derechos reservados. Google y el logotipo de Google son marcas de Google LLC. El resto de los nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que están asociados.
Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
.
Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar
Usa la navegación privada
Copia el nombre de usuario y la contraseña proporcionados para el lab
Haz clic en Abrir la consola en modo privado
Accede a la consola
Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperación
No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto
Este contenido no está disponible en este momento
Te enviaremos una notificación por correo electrónico cuando esté disponible
¡Genial!
Nos comunicaremos contigo por correo electrónico si está disponible
Un lab a la vez
Confirma para finalizar todos los labs existentes y comenzar este
Usa la navegación privada para ejecutar el lab
Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así
evitarás cualquier conflicto entre tu cuenta personal y la cuenta
de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
En este lab, implementarás la API de la aplicación Quiz en Compute Engine y usarás Cloud Endpoints para proporcionar funcionalidades de supervisión y registro.
Duración:
2 min de configuración
·
Acceso por 120 min
·
120 min para completar