arrow_back

Desarrolla aplicaciones en Google Cloud: Implementa y mantén tu aplicación

Acceder Unirse
Obtén acceso a más de 700 labs y cursos

Desarrolla aplicaciones en Google Cloud: Implementa y mantén tu aplicación

Lab 1 hora 30 minutos universal_currency_alt 5 créditos show_chart Intermedio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

Descripción general

Artifact Registry proporciona una ubicación única para almacenar y administrar tus paquetes y las imágenes de contenedor de Docker.

Cloud Build es un servicio que ejecuta tus compilaciones en Google Cloud.

Cloud Run es una plataforma de procesamiento administrada que te permite ejecutar contenedores en la infraestructura escalable de Google.

Google Cloud Observability proporciona servicios administrados de supervisión, registro y seguimiento integrados para aplicaciones.

Las bibliotecas cliente de Cloud son el método recomendado para llamar a las APIs de Google Cloud desde tus aplicaciones, ya que usan las convenciones y el estilo naturales del lenguaje de programación que utilizas en tu aplicación. Además, controlan la comunicación de bajo nivel con el servidor, lo que incluye la autenticación y la lógica de reintentos.

Las APIs de Google usan el protocolo OAuth 2.0 para la autenticación y la autorización.

Secret Manager te permite almacenar claves de APIs, contraseñas, certificados y otros datos sensibles como BLOB binarios o cadenas de texto.

En este lab, ejecutarás una aplicación de Python en Cloud Shell y, luego, la implementarás en Cloud Run. Trabajarás en los problemas que surgen cuando la aplicación se transfiere a Cloud Run y explorarás las funciones de desarrollo de apps de Google Cloud's operations suite.

Qué aprenderás

En este lab, aprenderás a realizar las siguientes tareas:

  • Alojar en contenedores y publicar una aplicación web de Python en Artifact Registry
  • Implementar una aplicación alojada en contenedores en Cloud Run
  • Usar registros para depurar problemas de la aplicación
  • Agregar Error Reporting a una aplicación

Configuración y requisitos

Antes de hacer clic en el botón Comenzar lab

Nota: Lee estas instrucciones.

Los labs son cronometrados y no se pueden pausar. El cronómetro, 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.

En este lab práctico de Qwiklabs, se te proporcionarán credenciales temporales nuevas para acceder a Google Cloud y realizar las actividades en un entorno de nube real, no en uno de simulación o demostración.

Requisitos

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
  • Tiempo para completar el lab
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses para el lab. Nota: Si usas una Pixelbook, abre una ventana de incógnito para ejecutar el lab.

Cómo iniciar tu lab y acceder a la consola

  1. Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá una ventana emergente para que selecciones tu forma de pago. A la izquierda, verás un panel con las credenciales temporales que debes usar para este lab.

    Panel de credenciales

  2. Copia el nombre de usuario y, luego, haz clic en Abrir la consola de Google. El lab inicia los recursos y abre otra pestaña que muestra la página Elige una cuenta.

    Sugerencia: Abre las pestañas en ventanas separadas, una junto a la otra.
  3. En la página Elige una cuenta, haz clic en Usar otra cuenta. Se abrirá la página de acceso.

    Cuadro de diálogo Elige una cuenta el que se destaca la opción Usar otra cuenta

  4. Pega el nombre de usuario que copiaste del panel Detalles de la conexión. Luego, copia y pega la contraseña.

Nota: Debes usar las credenciales del panel Detalles de la conexión. No uses tus credenciales de Google Cloud Skills Boost. Si tienes una cuenta propia de Google Cloud, no la utilices para este lab para no incurrir en cargos.
  1. 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 Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haz clic en el menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Menú de la consola de Cloud

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.

  1. En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

    Ícono de Cloud Shell destacado

  2. 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:

ID del proyecto destacado en la terminal de Cloud Shell

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:
gcloud auth list

Resultado:

Credentialed accounts: - @.com (active)

Resultado de ejemplo:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puedes solicitar el ID del proyecto con este comando:
gcloud config list project

Resultado:

[core] project =

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: La documentación completa de gcloud está disponible en la guía de descripción general de gcloud CLI .

Tarea 1: Configura la aplicación de Python y los recursos necesarios

En esta tarea, descargarás la aplicación de Python y crearás los recursos que usa la versión actual de la app.

Nota: En la mayoría de los lenguajes, se usa sangría para que el código sea más legible. En Python, también se usa para marcar bloques de código, por lo que debe aplicarse correctamente. La cantidad de espacios que se usan para ingresarla debe ser coherente. Mezclar espacios y tabulaciones para la sangría también puede causar problemas. En este lab, se usan cuatro espacios para la sangría de Python.

Crea la base de datos de Firestore

  1. Para crear la base de datos de Firestore, ejecuta el siguiente comando en Cloud Shell:

    gcloud firestore databases create --location={{{ project_0.default_region | region }}}

    La base de datos de Firestore se usa para almacenar datos de libros y perfiles de usuarios.

  2. Si se te solicita que autorices Cloud Shell, haz clic en Autorizar.

Crea el bucket de Cloud Storage con los permisos correctos

  1. Para crear el bucket de Cloud Storage, ejecuta el siguiente comando:

    gcloud storage buckets create gs://${GOOGLE_CLOUD_PROJECT}-covers --location={{{ project_0.default_region | region }}} --no-public-access-prevention --uniform-bucket-level-access

    El bucket de Cloud Storage se usa para almacenar imágenes de portadas de libros, tiene acceso uniforme a nivel de bucket y no usa la prevención del acceso público.

    Nota: Si el comando falla y el error indica que la cuenta no tiene credenciales válidas, vuelve a intentarlo. Es posible que los permisos de la cuenta de estudiante de Qwiklabs aún no se hayan propagado.
  2. Para que todos los objetos del bucket se puedan leer de forma pública, ejecuta el siguiente comando:

    gcloud storage buckets add-iam-policy-binding gs://${GOOGLE_CLOUD_PROJECT}-covers --member=allUsers --role=roles/storage.legacyObjectReader

Crea la pantalla de consentimiento de OAuth

Cuando usas OAuth 2.0 para la autorización, tu app solicita uno o más permisos de acceso de una Cuenta de Google. Google muestra una pantalla de consentimiento al usuario para registrar su autorización y, así, compartir datos con la aplicación.

  1. En la consola de Google Cloud, selecciona el menú de navegación (Ícono del menú de navegación) y, luego, APIs y servicios > Pantalla de consentimiento de OAuth.

  2. Haz clic en Comenzar.

  3. En Nombre de la app, ingresa Bookshelf.

  4. En Correo electrónico de asistencia del usuario, selecciona el correo electrónico del estudiante.

  5. Haz clic en Siguiente.

  6. En Público, selecciona Interno y, luego, haz clic en Siguiente.

    Los usuarios con acceso al proyecto podrán acceder a la app.

  7. En el panel izquierdo de las instrucciones del lab, copia el Nombre de usuario (Username).

    Copiar nombre de usuario

  8. En Direcciones de correo electrónico, pega el nombre de usuario copiado y, luego, haz clic en Siguiente.

  9. Marca la casilla de verificación para aceptar la política de datos del usuario y, luego, haz clic en Continuar.

  10. Haz clic en Crear.

  11. En el menú de navegación, haz clic en Desarrollo de la marca.

  12. Haz clic en + Agregar dominio.

  13. En la sección Dominios autorizados, ingresa cloudshell.dev en Dominio autorizado 1.

  14. Haz clic en Guardar.

  15. En el menú de navegación, haz clic en Acceso a los datos.

  16. Haz clic en Agregar o quitar permisos.

  17. Al principio de la lista, selecciona la casilla junto a openid.

  18. En Filtro, ingresa userinfo.profile, presiona Intro y, luego, selecciona la casilla junto al permiso …/auth/userinfo.profile.

  19. En Filtro, borra userinfo.profile, ingresa contacts, presiona Intro y, luego, selecciona la casilla del permiso .../auth/contacts.

  20. Haz clic en Actualizar.

    Deberías ver dos permisos no sensibles (openid y userinfo.profile) y un permiso sensible (contacts).

  21. Haz clic en Guardar.

Crea las credenciales de OAuth 2.0

  1. En el menú de navegación, haz clic en Clientes y, luego, en + Crear cliente.

  2. En Tipo de aplicación, selecciona Aplicación web.

  3. En Nombre, ingresa Bookshelf.

  4. En URIs de redireccionamiento autorizados, haz clic en + Agregar URI.

    El URI especificado aquí se usará cuando Google redireccione el navegador a la aplicación después de capturar el consentimiento del usuario.

  5. Para obtener el URI de redireccionamiento, ejecuta el siguiente comando en Cloud Shell:

    echo "https://8080-${WEB_HOST}/oauth2callback"
  6. Copia el URI que se creó con el comando echo y pégalo en URIs 1.

  7. Haz clic en Crear.

  8. Para el ID de cliente de OAuth 2.0 de Bookshelf, en la columna Acciones, haz clic en Descargar el cliente de OAuth (Ícono de descarga).

  9. Haz clic en Descargar JSON para guardar el archivo JSON del secreto del cliente en tu máquina local.

    Este archivo se usará para verificar tu app con Google.

  10. Haz clic en Cerrar.

  11. En Cloud Shell, haz clic en Más (Ícono Más) en la barra de herramientas de la parte superior derecha y, luego, en Subir.

  12. Haz clic en Elegir archivos, selecciona el archivo JSON del secreto del cliente y, luego, haz clic en Abrir.

  13. Haz clic en Subir.

    El archivo JSON del secreto del cliente ahora está disponible en el directorio principal. El contenido de este archivo se usará durante el proceso de OAuth.

Almacena el archivo JSON del secreto del cliente en Secret Manager

Secret Manager es un lugar seguro y recomendado para almacenar el archivo JSON del secreto del cliente.

  1. Para habilitar la API de Secret Manager, ejecuta el siguiente comando en Cloud Shell:

    gcloud services enable secretmanager.googleapis.com
  2. Para cambiar el nombre del archivo del secreto del cliente, ejecuta el siguiente comando:

    mv ~/client_secret*.json ~/client_secret.json
  3. Para crear el secreto, ejecuta el siguiente comando:

    gcloud secrets create bookshelf-client-secrets --data-file=$HOME/client_secret.json

    Ahora hay un secreto llamado bookshelf-client-secrets al que se puede acceder desde la aplicación.

  4. Para crear un secreto para la clave secreta de Flask, ejecuta el siguiente comando:

    tr -dc A-Za-z0-9 </dev/urandom | head -c 20 | gcloud secrets create flask-secret-key --data-file=-

    Este comando crea una contraseña aleatoria de 20 caracteres alfanuméricos y, luego, la almacena en un secreto llamado flask-secret-key.

Copia el código de Python en Cloud Shell

  1. Para copiar el código de Python de un bucket de Cloud Storage en el directorio raíz, ejecuta el siguiente comando:

    gcloud storage cp -r gs://cloud-training/devapps-foundations/code/lab3/bookshelf ~
  2. Para verificar el contenido del directorio bookshelf, ejecuta el siguiente comando:

    cd ~ ls -R bookshelf

    Deberías ver una lista que contiene siete archivos de Python, un archivo de requisitos y seis archivos de plantillas:

    bookshelf: booksdb.py main.py oauth.py profiledb.py requirements.txt secrets.py storage.py templates translate.py bookshelf/templates: base.html error.html form.html list.html profile.html view.html

Instala las dependencias requeridas

  1. Para enumerar las dependencias en el archivo de requisitos, ejecuta el siguiente comando:

    cat ~/bookshelf/requirements.txt

    El archivo de requisitos especifica las siguientes dependencias:

    • Flask: Un módulo de framework web que se usa para diseñar aplicaciones web de Python
    • Gunicorn: Un servidor HTTP de Python que se ejecuta en Linux
    • Cloud Logging: Se usa para registrar información de la aplicación
    • Firestore: Una base de datos NoSQL de documentos rápida, completamente administrada y sin servidores diseñada para facilitar el desarrollo de aplicaciones
    • Cloud Storage: Almacenamiento de objetos unificado de Google Cloud
    • Secret Manager: Almacenamiento seguro para datos sensibles
    • Compatibilidad de Google con OAuth 2.0: Autenticación y autorización para las APIs de Google
    • API de Cloud Translation: API para detectar el idioma del texto y traducirlo a otros idiomas
  2. Para instalar las dependencias en el archivo de requisitos, ejecuta el siguiente comando:

    pip3 install -r ~/bookshelf/requirements.txt --user

    pip es el instalador de paquetes para Python. Este comando pip3 instala los paquetes especificados en el archivo requirements.txt para usarlos con la versión 3 de Python.

Prueba la aplicación

  1. Para iniciar el servidor HTTP, ejecuta el siguiente comando:

    cd ~/bookshelf; EXTERNAL_HOST_URL="https://8080-${WEB_HOST}" ~/.local/bin/gunicorn -b :8080 main:app

    Se pasa una variable de entorno a la aplicación:

    • EXTERNAL_HOST_URL especifica el esquema y el nombre de host que se deben usar en la URL de devolución de llamada.

    La aplicación ahora se aloja en el puerto 8080.

  2. Para ejecutar la aplicación en el navegador web, haz clic en Vista previa en la Web (Web Preview) y, luego, selecciona Vista previa en el puerto 8080 (Preview on port 8080).

    Vista previa en el puerto 8080

    Se abre una nueva pestaña en el navegador con la aplicación ejecutándose. En esta página, se muestra una lista de todos los libros existentes. Aún no hay libros.

    Nota: Si se te solicita que autorices Cloud Shell, haz clic en Autorizar.
  3. Haz clic con el botón derecho en la imagen de la portada del libro Wizard of Oz y guárdala en tu computadora como oz.png:

    Portada del libro Wizard of Oz

  4. Haz clic en + Add book.

    Debes acceder para agregar un libro, por lo que se te pedirá que elijas una cuenta para acceder con Google:

    Elegir una cuenta

  5. Haz clic en el correo electrónico del estudiante y, luego, en Continuar.

  6. Haz clic en Permitir.

  7. Ingresa la siguiente información en el formulario:

    Campo Valor
    Título Wonderful Wizard of Oz
    Autor Frank L. Baum
    Fecha de publicación 1900
    Descripción There's no place like home!
  8. En Cover image, haz clic en Choose file.

  9. Selecciona el archivo que descargaste (oz.png) y haz clic en Abrir.

  10. Haz clic en Guardar.

    Regresarás a la página de visualización y se mostrarán los detalles de tu libro. Los detalles del libro se almacenan en la base de datos de Firestore y la imagen de portada se guarda en Cloud Storage.

  11. Haz clic en la dirección de correo electrónico.

    Se muestra el perfil. El control de selección de idioma debe mostrar English.

  12. Cambia el Idioma preferido a Español y, luego, haz clic en Save.

  13. Haz clic en el libro Wonderful Wizard of Oz.

    La página de vista ahora contiene la descripción original en inglés y la traducción al español.

  14. En Cloud Shell, ingresa CTRL-C para salir de la aplicación.

Para verificar este objetivo, haz clic en Revisar mi progreso. Configurar la aplicación de Python y los recursos necesarios

Tarea 2: Aloja la aplicación en contenedores y publícala en Artifact Registry

En esta tarea, usarás Cloud Build para alojar la aplicación en contenedores y publicarla en Artifact Registry.

Crea el repositorio

  1. Para crear el repositorio de Artifact Registry, ejecuta el siguiente comando en Cloud Shell:

    gcloud artifacts repositories create app-repo \ --repository-format=docker \ --location={{{ project_0.default_region | region }}}

    El repositorio albergará el contenedor de la aplicación.

  2. Para mostrar los detalles del repositorio, ejecuta el siguiente comando:

    gcloud artifacts repositories describe app-repo \ --location={{{ project_0.default_region | region }}}

Compila, aloja en contenedores y publica la aplicación

Puedes crear tu propio Dockerfile para empaquetar tu aplicación en una imagen de Docker, pero Cloud Build puede usar buildpacks para generar el contenedor por ti.

  1. Para compilar la aplicación con Cloud Build, ejecuta el siguiente comando:

    gcloud builds submit \ --pack image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \ ~/bookshelf

    El comando compila la imagen de Docker del código en el directorio ~/bookshelf y la almacena en el repositorio app-repo de Artifact Registry.

  2. Para ver la lista de compilaciones, ejecuta el siguiente comando:

    gcloud builds list

    Se muestra la compilación bookshelf.

Para verificar este objetivo, haz clic en Revisar mi progreso. Alojar en contenedores y publicar la aplicación en Artifact Registry

Tarea 3: Implementa la app en Cloud Run y pruébala

En esta tarea, implementarás y probarás la aplicación en Cloud Run.

Implementa la app en Cloud Run

  1. Para implementar la aplicación en Cloud Run, ejecuta el siguiente comando:

    gcloud run deploy bookshelf \ --image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \ --region={{{ project_0.default_region | region }}} --allow-unauthenticated \ --update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} Nota: La variable de entorno EXTERNAL_HOST_URL ya no es necesaria.
  2. Si se te solicita habilitar las APIs, ingresa y.

    El comando implementa la imagen que acabamos de compilar en Cloud Run. Debemos especificar que se permiten las llamadas no autenticadas porque los usuarios solo necesitan acceder cuando quieren crear, modificar o borrar libros. Se le proporciona la variable de entorno GOOGLE_CLOUD_PROJECT a la aplicación porque no está disponible en Cloud Run de forma predeterminada.

    Cloud Run implementa la aplicación.

    Nota: Si ves un error que indica que no se puede acceder a run.googleapis.com, es posible que la habilitación de la API aún no se haya propagado a Cloud Run. Repite el comando de Cloud Run hasta que funcione.
  3. Para obtener la URL de la aplicación, ejecuta el siguiente comando:

    echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
  4. Haz clic en el vínculo creado por el comando anterior.

    Se abrirá una nueva pestaña y se mostrará el mensaje “Servicio no disponible” (o algún otro error).

    La aplicación no se ejecuta correctamente. Debemos descubrir por qué.

Para verificar este objetivo, haz clic en Revisar mi progreso. Implementar la app en Cloud Run

Tarea 4: Encuentra el problema y corrige la aplicación

En esta tarea, usarás registros para corregir el problema.

Encuentra el problema usando los registros

Si encuentras un problema con tu aplicación, por lo general los registros de Cloud Logging pueden ayudarte a solucionarlo.

  1. En la consola de Google Cloud, selecciona el menú de navegación (Ícono del menú de navegación) y, luego, Cloud Run.

  2. Haz clic en bookshelf y, luego, en la pestaña Registros.

    Los registros son específicos de la aplicación Bookshelf en Cloud Run. Cuando los revises, deberías ver un error de permiso denegado para secretmanager.versions.access.

    Cuando la app se ejecuta en Cloud Shell, usa las credenciales del usuario que accedió. El usuario estudiante puede acceder a los elementos de Secret Manager, escribir archivos en Cloud Storage y llamar a la API de Translation.

    A menos que proporciones una cuenta de servicio, las aplicaciones de Cloud Run usarán la cuenta de servicio predeterminada de Compute Engine, que no tiene esos permisos.

    La práctica recomendada es crear una cuenta de servicio específica para tu aplicación, conectarla a esta y, luego, proporcionarle los permisos correctos.

Crea la cuenta de servicio y vuelve a implementar

  1. Para crear una cuenta de servicio para la aplicación, ejecuta el siguiente comando en Cloud Shell:

    gcloud iam service-accounts create bookshelf-run-sa

    Aún no has agregado permisos. Para determinar el rol correcto que debes agregar, puedes consultar la referencia de los roles básicos y predefinidos de IAM. Los roles de Secret Manager incluyen el rol Usuario con acceso a los secretos de Secret Manager, que debe proporcionar los permisos mínimos para acceder a los secretos.

    Nota: Puedes usar un proceso iterativo para determinar los permisos que debes agregar hasta que la aplicación se ejecute correctamente. En este lab, otorgarás los permisos necesarios a la cuenta de servicio sin seguir este proceso.
  2. Para agregar los roles necesarios, ejecuta los siguientes comandos:

    gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \ --member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor" gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \ --member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \ --role="roles/cloudtranslate.user" gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \ --member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \ --role="roles/datastore.user" gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \ --member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \ --role="roles/storage.objectUser"

    Los permisos son para Secret Manager, la API de Cloud Translation, Firestore y Cloud Storage.

    La aplicación en ejecución no recogerá los permisos de inmediato, pero lo hará en unos minutos. Para evitar el retraso, se puede volver a implementar la app.

  3. Para hacer esto con una cuenta de servicio, ejecuta el siguiente comando:

    gcloud run deploy bookshelf \ --image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \ --region={{{ project_0.default_region | region }}} --allow-unauthenticated \ --update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \ --service-account=bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
  4. Para abrir la aplicación, ejecuta el siguiente comando y, luego, haz clic en el vínculo:

    echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"

    Es posible que veas un error. Este se produce porque es posible que los permisos de la cuenta de servicio aún no se hayan propagado.

    Si miras los registros de Bookshelf para el servicio de Cloud Run, deberías ver un error de Permisos faltantes o insuficientes. La app fallará hasta que se propaguen los permisos y la cuenta de servicio pueda llamar a los servicios de Google Cloud requeridos.

  5. Hasta que la app se abra correctamente, cierra la pestaña de la aplicación y vuelve a hacer clic en la URL generada.

    Cuando se hayan propagado los permisos, se mostrará la página Books.

Prueba y corrige OAuth

  1. En la aplicación, haz clic en Acceder.

    Se produce un error con el acceso.

    El mensaje de error indica que el acceso está bloqueado, que la app envió una solicitud no válida y que el error es una falta de coincidencia en el URI de redireccionamiento. Este error se produce porque la configuración de OAuth solo se definió para ejecutarse en cloudshell.dev, no en la URL del servicio de Cloud Run.

  2. En la consola de Google Cloud, selecciona el menú de navegación (Ícono del menú de navegación), luego APIs y servicios > Pantalla de consentimiento de OAuth y, luego, Desarrollo de la marca.

  3. Haz clic en + Agregar dominio.

  4. En Cloud Shell, ejecuta el siguiente comando:

    echo "bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"

    El comando genera la URL de la aplicación sin https://.

  5. Copia el nombre de dominio en el portapapeles y pégalo en Dominio autorizado 2.

  6. Haz clic en Guardar.

  7. En el menú de navegación, selecciona Clientes.

  8. En IDs de clientes de OAuth 2.0, haz clic en Biblioteca.

  9. En URIs de redireccionamiento autorizados, haz clic en + Agregar URI.

  10. Para obtener el URI de redireccionamiento, ejecuta el siguiente comando en Cloud Shell:

    echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app/oauth2callback"
  11. Copia el URI que creó el comando echo y, luego, pégalo en URIs 2.

  12. Haz clic en Guardar.

    El archivo JSON del cliente de OAuth cambió, por lo que debemos volver a guardarlo como secreto.

  13. Para el ID de cliente de OAuth 2.0 de Bookshelf, en la columna Acciones, haz clic en Descargar el cliente de OAuth (Ícono de descarga).

  14. Haz clic en Descargar JSON y, luego, guarda el archivo JSON del secreto del cliente actualizado en tu máquina local.

  15. Haz clic en Cerrar.

  16. En Cloud Shell, haz clic en Más (Ícono Más) en la barra de herramientas de la parte superior derecha y, luego, en Subir.

  17. Haz clic en Elegir archivos y selecciona el archivo JSON del secreto del cliente actualizado. Luego, haz clic en Abrir.

  18. Haz clic en Subir.

    El archivo JSON del secreto del cliente actualizado ahora está disponible en el directorio principal.

  19. Para reemplazar el archivo de secreto del cliente, ejecuta los siguientes comandos en Cloud Shell:

    rm ~/client_secret.json mv ~/client_secret*.json ~/client_secret.json
  20. Para agregar una versión actualizada del secreto, ejecuta el siguiente comando:

    gcloud secrets versions add bookshelf-client-secrets --data-file=$HOME/client_secret.json

    El secreto más reciente ahora es correcto. Solo se carga una vez para la aplicación, por lo que debes volver a implementar esta última.

  21. Para hacerlo, ejecuta el siguiente comando:

    gcloud run deploy bookshelf \ --image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \ --region={{{ project_0.default_region | region }}} --allow-unauthenticated \ --update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \ --service-account=bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
  22. Cuando la aplicación se haya implementado, ejecuta el siguiente comando y, luego, haz clic en la URL generada:

    echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"

    La aplicación está funcionando.

  23. En la aplicación, haz clic en Acceder y, luego, proporciona el consentimiento para acceder.

    La dirección de correo electrónico ahora es un vínculo.

  24. Haz clic en la dirección de correo electrónico.

    El idioma preferido sigue siendo el español.

Para verificar este objetivo, haz clic en Revisar mi progreso. Corregir la aplicación

Tarea 5: Explora las funciones de Google Cloud Observability

En esta tarea, explorarás algunas de las funciones de Google Cloud Observability que se pueden usar para mantener tu aplicación en buen estado.

Agrega Error Reporting a la aplicación

Error Reporting agrega los errores de tus servicios de la nube en ejecución.

  1. Para agregar el rol requerido a la cuenta de servicio, ejecuta el siguiente comando en Cloud Shell:

    gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \ --member="serviceAccount:bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \ --role="roles/errorreporting.writer"
  2. En Cloud Shell, en un editor de archivos, abre ~/bookshelf/requirements.txt.

  3. Agrega la siguiente línea:

    google-cloud-error-reporting==1.9.2

    El archivo requirements.txt ahora debería verse de la siguiente manera:

    Flask==2.3.3 gunicorn==23.0.0 google-cloud-logging==3.6.0 google-cloud-firestore==2.12.0 google-cloud-storage==2.10.0 google-cloud-secret-manager==2.16.4 google-api-python-client==2.101.0 google-auth==2.23.1 google-auth-oauthlib==1.1.0 google-cloud-translate==3.12.0 google-cloud-error-reporting==1.9.2
  4. Guarda el archivo.

  5. Para instalar las dependencias actualizadas, ejecuta el siguiente comando:

    pip3 install -r ~/bookshelf/requirements.txt --user
  6. En un editor de archivos, abre ~/bookshelf/main.py.

  7. En la línea después de la instrucción de importación cloud_logging, agrega el siguiente código:

    from google.cloud import error_reporting
  8. Después de la parte inferior del extremo /profile, agrega el siguiente código:

    @app.route('/raiseerror') def raise_error(): """ Manually raise an error. """ log_request(request) print('raise_error()') error_client = error_reporting.Client() error_message = 'Intentionally Created Error' error_client.report( message=error_message, http_context=error_reporting.build_flask_context(request), ) session['error_message'] = f"{error_message}" return redirect(url_for('.error'))

    Si llamas al extremo /raiseerror, se simulará un error, ya que se generará un error en Error Reporting y se te redireccionará a la página de error.

  9. Guarda el archivo.

  10. Para compilar y volver a implementar la aplicación, ejecuta los siguientes comandos:

    gcloud builds submit \ --pack image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \ ~/bookshelf gcloud run deploy bookshelf \ --image={{{ project_0.default_region | region }}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/app-repo/bookshelf \ --region={{{ project_0.default_region | region }}} --allow-unauthenticated \ --update-env-vars=GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \ --service-account=bookshelf-run-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
  11. Cuando la aplicación se haya implementado, ejecuta el siguiente comando y, luego, haz clic en la URL generada:

    echo "https://bookshelf-$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)").{{{ project_0.default_region | region }}}.run.app"
  12. Agrega /raiseerror al final de la URL y, luego, haz clic en Intro.

    Se te redireccionará a la página de error de la aplicación, con el error Intentionally Created Error.

  13. Reemplaza error por raiseerror en la URL y, luego, haz clic en Enter.

    Se te redireccionará nuevamente a la página de error de la aplicación. Analizarás estos errores en un paso posterior.

Para verificar este objetivo, haz clic en Revisar mi progreso. Agregar Error Reporting a la aplicación

Explora la página de detalles del servicio de Cloud Run

La página de detalles del servicio de Cloud Run contiene paneles integrados que te ayudarán a administrar tu servicio.

  1. En la consola de Google Cloud, selecciona el menú de navegación (Ícono del menú de navegación) y, luego, Cloud Run.

  2. Haz clic en bookshelf.

    Se muestra la pestaña Métricas.

  3. Haz clic en Último día y, luego, selecciona Última hora.

    En la pestaña Métricas, se muestra una lista de invocaciones del servicio que se realizaron en la última hora y gráficos de métricas que se recopilan automáticamente.

  4. Haz clic en la pestaña Registros.

    En esta pestaña, puedes explorar todos los registros del servicio de Cloud Run.

Explora Cloud Logging

  1. En el campo de búsqueda de la barra de título de la consola de Google Cloud, escribe Logging, haz clic en Buscar y, luego, en Logging.

    Aquí se puede acceder a todos los registros.

  2. En Tipo de recurso, haz clic en Revisión de Cloud Run.

    Aquí se muestran todos los registros de Cloud Run. Puedes filtrar por nombre del servicio o de la revisión.

  3. En Gravedad, haz clic en Error.

    Aquí se muestran los errores que se generaron en la aplicación. Si tuvieras más aplicaciones que usaran más servicios, sería difícil distinguir las diferentes fuentes de errores en esta vista.

Explora Error Reporting

  1. En el campo de búsqueda de la barra de título de la consola de Google Cloud, escribe Error Reporting, haz clic en Buscar y, luego, en Error Reporting.

    Los errores se agrupan en esta página. Muchos de los errores se crearon automáticamente cuando la aplicación de Python falló en Cloud Run. También se muestra el error generado manualmente.

  2. Haz clic en 1 hora.

  3. Haz clic en Intentionally Created Error.

    Aquí se agrupan los errores similares. Esto puede ayudarte a depurar problemas.

  4. En uno de los ejemplos, haz clic en Ver registros.

    Este vínculo te lleva de vuelta a Cloud Logging, a esta entrada de registro. Puedes fijar un error registrado y explorar los registros que ocurrieron cerca del mismo período.

    Nota: En una aplicación real, debes intentar registrar cualquier error y la información que pueda ayudarte a hacer un seguimiento de los problemas que encuentres.

¡Felicitaciones!

Alojaste una aplicación en contenedores, la implementaste correctamente en Cloud Run y depuraste los problemas que surgieron. Otorgaste los roles necesarios a la cuenta de servicio y actualizaste la configuración de OAuth para admitir la implementación local y de Cloud Run. Agregaste Error Reporting a la aplicación y, luego, exploraste las funciones de desarrollo de aplicaciones de Google Cloud Observability.

Próximos pasos/Más información

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 2025 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.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. 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.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. 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.