Puntos de control
Authenticate API Requests
/ 25
Create an App Engine instance and Storage Bucket
/ 25
Run the Application
/ 25
Deploy the App
/ 25
Cómo implementar una aplicación web de Flask escrita en Python en el entorno flexible de App Engine
GSP023
Descripción general
En este lab, aprenderás a implementar una aplicación web de Flask escrita en Python en el entorno flexible de App Engine. La aplicación de ejemplo permite que el usuario suba una foto del rostro de alguien y descubra qué tan probable es que esa persona esté feliz. La aplicación usa las APIs de Google Cloud para Vision, Storage y Datastore.
Acerca de App Engine
Las aplicaciones de Google App Engine son fáciles de crear, mantener y escalar a medida que cambian tus necesidades de almacenamiento de datos y tráfico. Con App Engine, no tendrás que mantener servidores. Solo debes subir tu aplicación y estará lista para usar.
Las aplicaciones de App Engine se escalan automáticamente según el tráfico entrante. El balanceo de cargas, los microservicios, la autorización, las bases de datos SQL y NoSQL, la división del tráfico, el registro, la búsqueda, el control de versiones, el lanzamiento, la reversión y el análisis de seguridad son compatibles de forma nativa y sumamente personalizables.
El entorno flexible de App Engine es compatible con una gran cantidad de lenguajes de programación, como Java, Python, PHP, Node.js, Ruby y Go. El entorno estándar de App Engine es una opción adicional para ciertos lenguajes, incluido Python. Los dos entornos proporcionan a los usuarios máxima flexibilidad en el comportamiento de sus aplicaciones, ya que cada uno posee determinadas ventajas. Lee Elige un entorno de App Engine para obtener más información.
Qué aprenderás
- Cómo implementar una aplicación web sencilla para el entorno flexible de App Engine
- Cómo acceder a bibliotecas cliente de Google Cloud para Vision, Storage y Datastore
- Cómo usar Cloud Shell
Requisitos
- Conocimientos de Python
- Conocimientos de editores de texto estándares de Linux, como Vim, Emacs o nano
- Acceso a una imagen de un rostro
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
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.
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)
- Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón Abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debe 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: Ordene 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 podría generar cargos adicionales. -
Haga 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.
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.
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:
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):
-
Haz clic en Autorizar.
-
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
- Puedes solicitar el ID del proyecto con este comando (opcional):
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
Tarea 1: Obtén el código de muestra
- En Cloud Shell, ejecuta el siguiente comando para clonar el repositorio de GitHub:
- Usa el comando de cambio de directorio
flex_and_vision
:
Tarea 2: Autentica solicitudes a las APIs
Las APIs de Vision, Storage y Datastore se habilitan automáticamente para que las uses en este lab. Para hacer solicitudes a las APIs, necesitará credenciales de cuentas de servicio. Puedes generar credenciales desde tu proyecto con gcloud en Cloud Shell. Tu ID del proyecto se encuentra en la pestaña en la que comenzaste el lab.
- Establece una variable de entorno para tu ID del proyecto:
- Crea una cuenta de servicio para acceder a las APIs de Google Cloud cuando realices pruebas locales:
- Otorga los permisos adecuados a tu nueva cuenta de servicio:
- Después de crear tu cuenta de servicio, crea una clave para ella:
Este comando genera una clave de cuenta de servicio que se almacena en un archivo JSON llamado key.json
en tu directorio principal.
- Usa la ruta de acceso absoluta de la clave generada para determinar una variable de entorno para tu clave de cuenta de servicio:
Obtén más información para autenticar la API de Vision en la guía de inicio rápido para configurar la API de Vision.
Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
Tarea 3: Prueba la aplicación de forma local
Inicia tu entorno virtual e instala las dependencias
- Crea un entorno aislado de Python 3 llamado
env
con virtualenv:
- Ingresa tu nuevo entorno virtualenv llamado
env
:
- Usa
pip
para instalar las dependencias de tu proyecto desde el archivorequirements.txt
:
El archivo requirements.txt
es una lista de las dependencias de paquetes que necesitas para tu proyecto. El comando anterior descargó todas estas dependencias de paquetes en virtualenv.
Crea una aplicación de App Engine
- Primero, crea una variable de entorno con la región asignada:
- A continuación, crea una instancia de App Engine usando lo siguiente:
Crea un bucket de Storage
- Primero, define la variable de entorno CLOUD_STORAGE_BUCKET para que sea igual al nombre de tu ID de proyecto (PROJECT_ID). Generalmente, se recomienda que asignes a tu bucket el mismo nombre que para PROJECT_ID por conveniencia:
- Ahora, ejecuta el siguiente comando para crear un bucket con el mismo nombre que PROJECT_ID:
Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
Ejecuta la aplicación
- Ejecuta el siguiente comando para iniciar tu aplicación:
- Una vez que se haya iniciado la aplicación, haz clic en el ícono de Vista previa en la Web , en la barra de herramientas de Cloud Shell, y selecciona Preview on port 8080.
En tu navegador, se abrirá una pestaña y se conectará al servidor que acabas de iniciar. Deberías ver algo como esto:
Ahora todo se pondrá más interesante.
- Haz clic en el botón Elegir archivo, busca una imagen de un rostro humano en tu computadora y, luego, haz clic en Enviar.
Después de subir una foto, deberías ver algo como esto:
Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
Tarea 4: Explora el código
Diseño del código de muestra
La muestra tiene el siguiente diseño:
main.py
Este archivo de Python es una aplicación web de Flask. La aplicación permite que los usuarios envíen fotos (preferentemente de rostros), las cuales se almacenan en Cloud Storage y se analizan con la función de detección de rostro de la API de Cloud Vision. La información clave sobre cada foto se almacena en Datastore, la base de datos NoSQL de Google Cloud, a la que se accede cada vez que un usuario visita el sitio web.
Esta aplicación usa las bibliotecas cliente de Google Cloud para Storage, Datastore y Vision. Estas bibliotecas cliente facilitan el acceso a las APIs de Cloud desde tus lenguajes de programación preferidos.
Veamos algunos fragmentos clave del código.
En la sección de importaciones, ubicada en la parte superior, importamos los distintos paquetes que necesitamos para nuestro código. Importamos las bibliotecas cliente de Google Cloud para Datastore, Storage y Vision de esta manera:
Código que determina lo que sucede cuando un usuario visita la URL raíz del sitio web
Este código muestra lo que sucede cuando un usuario visita la URL raíz del sitio web. Se crea un objeto cliente de Datastore, que se usa para acceder a la biblioteca cliente de esta solución. Se ejecuta una consulta en Datastore para entidades del tipo Rostros
. Por último, se procesa la plantilla HTML y se pasa image_entities
, que extrajimos de Datastore como una variable.
Analicemos cómo se guardan las entidades en Datastore. Datastore es la solución de base de datos NoSQL de Google Cloud. Los datos se almacenan en objetos llamados entidades. A cada entidad se le asigna una clave única de identificación, que se puede crear usando un tipo y una cadena de nombre de clave. Un tipo es un bucket de organización que designa el tipo de entidad que es. Por ejemplo, recomendamos que configures tipos para fotos, personas y animales.
Cada entidad puede tener múltiples propiedades definidas por el desarrollador, que pueden tener valores de varios tipos, incluidos números enteros, números de punto flotante, cadenas, fechas o datos binarios:
De manera similar a Datastore, se puede acceder a las bibliotecas cliente de Storage y Vision de forma programática. Puedes abrir el archivo main.py tú mismo con vim, emacs o nano para explorar todo el código de muestra.
homepage.html
El framework web de Flask aprovecha Jinja2 como un motor de plantillas. Esto nos permite pasar variables y expresiones de main.py
a homepage.html
que se reemplazan por valores cuando la página se procesa.
Obtén más información sobre Jinja2 en la documentación de Template Designer.
Esta plantilla HTML de Jinja2 muestra un formulario para que los usuarios envíen fotos a la base de datos. También muestra cada imagen que se envió antes junto con su nombre de archivo, fecha y hora de carga, y la probabilidad de que el rostro detectado por la API de Vision esté feliz.
Tarea 5: Implementa la aplicación en un entorno flexible de App Engine
El entorno flexible de App Engine utiliza un archivo llamado app.yaml
para describir la configuración de implementación de una aplicación. Si falta ese archivo, App Engine intentará deducir la configuración de la implementación. Sin embargo, se recomienda proporcionar este archivo.
- A continuación, modificarás
app.yaml
con el editor que prefieras: vim, nano o emacs. Usaremos el editornano
:
- Cuando
app.yaml
esté abierto, reemplaza<your-cloud-storage-bucket>
por el nombre de tu bucket de Cloud Storage. Si olvidaste el nombre de tu bucket de Cloud Storage, copia el ID del proyecto en el panel de detalles del lab.
La sección env_variables
define las variables de entorno que se usarán en main.py
cuando se implemente la aplicación.
- A continuación, agrega el siguiente código al final del archivo para configurar tu app para que use el escalamiento manual:
- Por último, cambia
python_version
de 3 a 3.7 para implementar tu aplicación de App Engine correctamente.
Tu archivo debería verse así:
Esta es la configuración básica que se necesita para implementar una aplicación de Python 3 en el entorno flexible de App Engine. Puedes obtener más información para configurar App Engine en la guía Configura tu app con app.yaml.
- Guarda y cierra el archivo en
nano
:
- Presiona CTRL + X.
- Cuando se te solicite, escribe Y y presiona INTRO.
- Actualiza el código de tiempo de espera de Cloud Build de la siguiente manera:
- Usa
gcloud
para implementar tu aplicación en App Engine:
Si aparece la pregunta Do you want to continue (Y/n), escribe Y y presiona INTRO.
Observa Cloud Shell mientras se compila la aplicación. Este proceso puede demorar hasta 10 minutos. El entorno flexible de App Engine aprovisiona automáticamente una instancia de máquina virtual de Compute Engine para ti en segundo plano y, luego, instala la aplicación y la inicia.
- Después de implementar la aplicación, usa la siguiente URL para abrirla en tu navegador web:
gcloud config list project
en Cloud Shell.Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
¡Felicitaciones!
¡Felicitaciones! En este lab, aprendiste a escribir y a implementar una aplicación web de Python en el entorno flexible de App Engine.
Próximos pasos/Más información
- Python en Google Cloud
- Documentación sobre el entorno flexible de App Engine para Python
- Documentación para bibliotecas cliente de Python: Datastore, Storage y Vision
- Más información sobre las bibliotecas cliente
- Más muestras de código de Python
- Más información sobre Flask.
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.
Última actualización del manual: 13 de octubre de 2023
Prueba más reciente del lab: 13 de octubre de 2023
Copyright 2024 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.