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 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.
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:
cd 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:
Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
Autenticar solicitudes a las APIs
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:
virtualenv -p python3 env
Ingresa tu nuevo entorno virtualenv llamado env:
source env/bin/activate
Usa pippara instalar las dependencias de tu proyecto desde el archivo requirements.txt:
pip install -r requirements.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:
gcloud app create --region=$AE_REGION
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:
export CLOUD_STORAGE_BUCKET=${PROJECT_ID}
Ahora, ejecuta el siguiente comando para crear un bucket con el mismo nombre que PROJECT_ID:
gsutil mb gs://${PROJECT_ID}
Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
Crear una aplicación de App Engine y un depósito de almacenamiento
Ejecuta la aplicación
Ejecuta el siguiente comando para iniciar tu aplicación:
python main.py
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:
Nota: Cuando hayas terminado de probar tu aplicación de forma local, presiona CTRL + C en Cloud Shell para apagar el servidor web local.
Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
Ejecutar la aplicación
Tarea 4: Explora el código
Diseño del código de muestra
La muestra tiene el siguiente diseño:
templates/
homepage.html /* HTML template that uses Jinja2 */
app.yaml /* App Engine application configuration file */
main.py /* Python Flask web application */
requirements.txt /* List of dependencies for the project */
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:
from google.cloud import datastore
from google.cloud import storage
from google.cloud import vision
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.
@app.route('/')
def homepage():
# Create a Cloud Datastore client.
datastore_client = datastore.Client()
# Use the Cloud Datastore client to fetch information from Datastore about
# each photo.
query = datastore_client.query(kind='Faces')
image_entities = list(query.fetch())
# Return a Jinja2 HTML template and pass in image_entities as a parameter.
return render_template('homepage.html', image_entities=image_entities)
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:
# Create a Cloud Datastore client.
datastore_client = datastore.Client()
# Fetch the current date / time.
current_datetime = datetime.now()
# The kind for the new entity.
kind = 'Faces'
# The name/ID for the new entity.
name = blob.name
# Create the Cloud Datastore key for the new entity.
key = datastore_client.key(kind, name)
# Construct the new entity using the key. Set dictionary values for entity
# keys blob_name, storage_public_url, timestamp, and joy.
entity = datastore.Entity(key) entity['blob_name'] = blob.name entity['image_public_url'] = blob.public_url entity['timestamp'] = current_datetime entity['joy'] = face_joy
# Save the new entity to Datastore.
datastore_client.put(entity)
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.
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.
<h1>Google Cloud Platform - Face Detection Sample</h1>
<p>This Python Flask application demonstrates App Engine Flexible, Google Cloud
Storage, Datastore, and the Cloud Vision API.</p>
<br>
<html>
<body>
<form action="upload_photo" method="POST" enctype="multipart/form-data">
Upload File: <input type="file" name="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
{% for image_entity in image_entities %}
<img src="{{image_entity['image_public_url']}}" width=200 height=200>
<p>{{image_entity['blob_name']}} was uploaded {{image_entity['timestamp']}}.</p>
<p>Joy Likelihood for Face: {{image_entity['joy']}}</p>
{% endfor %}
</body>
</html>
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 editor nano:
nano app.yaml
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:
manual_scaling:
instances: 1
Por último, cambia python_version de 3 a 3.7 para implementar tu aplicación de App Engine correctamente.
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:
gcloud config set app/cloud_build_timeout 1000
Usa gcloud para implementar tu aplicación en App Engine:
gcloud app deploy
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:
https://<PROJECT_ID>.appspot.com
Nota: Si olvidaste el PROJECT_ID, ejecuta gcloud config list project en Cloud Shell.
Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
Implementar la app
¡Felicitaciones!
¡Felicitaciones! En este lab, aprendiste a escribir y a implementar una aplicación web de Python en el entorno flexible de App Engine.
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 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.
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, aprenderás a usar el entorno flexible de App Engine con el framework de Flask desarrollado en Python. Implementarás una aplicación web que permita a los usuarios subir fotos de rostros de personas y llevar a cabo tareas simples de reconocimiento facial con la API de Cloud Vision.
Duración:
0 min de configuración
·
Acceso por 60 min
·
45 min para completar