GSP185

Descripción general
Cloud Storage permite almacenar y recuperar cualquier cantidad de datos en todo el mundo y en cualquier momento. Puedes usar Cloud Storage en diversas situaciones, como entregar contenido de un sitio web, almacenar datos para archivarlos y recuperarlos en caso de desastres, o distribuir grandes objetos de datos a los usuarios a través de una descarga directa.
En este lab, configurarás una aplicación para usar Cloud Storage para almacenar y recuperar datos de la aplicación. La aplicación es un cuestionario en línea; los datos son los datos del formulario, incluida una imagen que subes desde tu máquina local.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Configurar Cloud Shell como tu entorno de desarrollo
- Actualizar el código de la aplicación para integrar Cloud Datastore
- Usar la aplicación Quiz para subir un archivo de imagen en Cloud Storage y ver la imagen en el cuestionario
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.
Inicia el editor de código de Cloud Shell
- En Cloud Shell, haz clic en Abrir editor para iniciar el editor de código.

Nota: El editor de código se inicia en una nueva pestaña del navegador, junto con Cloud Shell.
- Ejecuta el siguiente comando para configurar el ID del proyecto; reemplaza
YOUR-PROJECT-ID
con tu ID del proyecto:
gcloud config set project <YOUR-PROJECT-ID>
Tarea 1. Prepara la aplicación Quiz
En esta sección, accederás a Cloud Shell, clonarás el repositorio de Git que contiene la aplicación Quiz 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:
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
Configura y ejecuta la aplicación Quiz
-
Cambia el directorio de trabajo:
cd ~/training-data-analyst/courses/developingapps/python/cloudstorage/start
-
Establece la región con una variable:
REGION={{{project_0.default_region | REGION}}}
sed -i s/us-central/$REGION/g prepare_environment.sh
-
Configura la aplicación:
. prepare_environment.sh
Nota:
Ignora cualquier advertencia.
Este archivo de secuencia de comandos realiza lo siguiente:
- Crea una aplicación de App Engine.
- Exporta una variable de entorno
GCLOUD_PROJECT
.
- Actualiza pip y ejecuta
pip install -r requirements.txt
.
- Crea entidades en Cloud Datastore.
- Imprime el ID del proyecto.
-
Ejecuta la aplicación:
python run_server.py
La aplicación se está ejecutando cuando ves el siguiente resultado:
* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 502-577-323
Revisa la aplicación Quiz
-
Para ver la aplicación, haz clic en Vista previa en la Web > Vista previa en el puerto 8080.
-
Haz clic en el vínculo Crear pregunta de la barra de herramientas.
Deberías ver un formulario simple que contiene cuadros de texto para las preguntas y respuestas, y botones de selección para elegir la respuesta correcta.

Nota:
El formulario tiene un campo para subir nuevos archivos que se usará para subir archivos de imagen o video. En este lab, subirás un archivo de imagen; usarás el mismo proceso para subir el archivo de video.
Tarea 2: Examina el código de la aplicación Quiz
En esta sección, revisarás el código de la aplicación del caso de éxito.
En este lab, verás y editarás archivos. Puedes usar los editores de shell que están instalados en Cloud Shell, como nano
o vim
, o bien el editor de código de Cloud Shell.
En este lab, se usa el editor de código de Cloud Shell para revisar el código de la aplicación Quiz.
Examina el código de la aplicación
-
Usa el panel del navegador de archivos ubicado en la parte izquierda del editor para ir hasta la carpeta /training-data-analyst/courses/developingapps/python/cloudstorage/start
.
-
Selecciona el archivo add.html
en la carpeta ...quiz/webapp/templates/
.
Este archivo contiene la plantilla para el formulario Create Question.
Observa cómo el formulario se modificó para usar multipart/form-data
como el enc-type
y hay dos nuevos controles de formularios:
- Un control de carga de archivos llamado
image
- Un campo oculto llamado
imageUrl
-
Selecciona el archivo routes.py
en la carpeta ...quiz/webapp
.
Este archivo contiene la ruta del controlador POST que recibe los datos del formulario. Se modificó para obtener el archivo de imagen del formulario.
-
Selecciona el archivo questions.py
en la carpeta ...quiz/webapp
.
Este archivo contiene el controlador que procesa los datos del formulario extraídos en el archivo routes.py
. Modificarás este archivo para usar un nuevo módulo que sea un cliente para Cloud Storage.
-
Selecciona el archivo ...quiz/gcp/storage.py
.
Este es el archivo en el que escribirás el código para guardar los datos del archivo de imagen en Cloud Storage.
Tarea 3. Crea un bucket de Cloud Storage
En esta sección, crearás un bucket de Cloud Storage y exportarás una variable de entorno que hace referencia a este.
-
Vuelve a la línea de comandos de Cloud Shell.
-
Detén la aplicación presionando Ctrl+C.
-
Crea un bucket de Cloud Storage con el nombre <Project ID>-media
:
gsutil mb gs://$DEVSHELL_PROJECT_ID-media
Puedes crear un bucket con el comando gsutil mb, y pasar el nombre del bucket como gs://BUCKET_NAME.
Puedes usar $DEVSHELL_PROJECT_ID como el prefijo del nombre del bucket seguido de -media.
-
Para exportar el nombre del bucket de Cloud Storage como una variable de entorno llamada GCLOUD_BUCKET
, ejecuta el siguiente comando:
export GCLOUD_BUCKET=$DEVSHELL_PROJECT_ID-media
Nota:
Recuerda que la aplicación usa variables de entorno para la configuración.
Esto permite que el equipo de desarrollo implemente la aplicación en las etapas de desarrollo, evaluación, prueba y producción simplemente cambiando estas variables.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear un bucket
Tarea 4. Agrega objetos a Cloud Storage
En esta sección, escribirás código para guardar los archivos cargados en Cloud Storage.
Nota: Actualiza el código dentro de las secciones marcadas de la siguiente manera:
# TODO
# END TODO
Para profundizar tus conocimientos, revisa el código, los comentarios intercalados y la documentación de la API relacionada.
Para obtener información sobre la documentación de la API para Cloud Storage, consulta API y referencia.
Importa y usa el módulo Cloud Storage de Python
- En el editor de código, ve a la parte superior del archivo
...quiz/gcp/storage.py
.
- Obtén el nombre del bucket de la variable de entorno
GCLOUD_BUCKET
.
- Importa el módulo de almacenamiento desde el paquete
google.client
.
- Crea un cliente de Cloud Storage.
- Obtén una referencia al bucket de Cloud Storage.
quiz/gcp/storage.py
# TODO: Get the Bucket name from the
# GCLOUD_BUCKET environment variable
bucket_name = os.getenv('GCLOUD_BUCKET')
# END TODO
# TODO: Import the storage module
from google.cloud import storage
# END TODO
# TODO: Create a client for Cloud Storage
storage_client = storage.Client()
# END TODO
# TODO: Use the client to get the Cloud Storage bucket
bucket = storage_client.get_bucket(bucket_name)
# END TODO
Escribe un código para enviar un archivo a Cloud Storage
- En
storage.py
, en la función upload_file(...)
, quita la sentencia pass existente. Luego, usa el cliente de Cloud Storage para subir un archivo a tu bucket de Cloud Storage y ponlo disponible de forma pública.
- Obtén una referencia a un objeto BLOB de Cloud Storage en el bucket.
- Usa el objeto BLOB para subir la imagen.
- Haz el archivo público.
- Muestra la URL pública del BLOB.
quiz/gcp/storage.py: Función upload)file(...)
"""
Uploads a file to a given Cloud Storage bucket and returns the public url
to the new object.
"""
def upload_file(image_file, public):
# TODO: Use the bucket to get a blob object
blob = bucket.blob(image_file.filename)
# END TODO
# TODO: Use the blob to upload the file
blob.upload_from_string(
image_file.read(),
content_type=image_file.content_type)
# END TODO
# TODO: Make the object public
if public:
blob.make_public()
# END TODO
# TODO: Modify to return the blob's Public URL
return blob.public_url
# END TODO
- Guarda
storage.py
.
Escribe el código para usar la funcionalidad de Cloud Storage
- En el editor, ve a la parte superior del archivo
...quiz/webapp/questions.py
.
- Modifica la sentencia import para utilizar tu cliente de almacenamiento, así como el cliente del almacén de datos.
- Desplázate a la función
upload_file(...)
. Usa tu cliente de almacenamiento para subir un archivo y asigna la URL pública que se muestra para una variable.
- Modifica la declaración return para visualizar la URL pública.
- Desplázate a la función
save_question(...)
. Escribe una prueba "if" para ver si image_file
está presente.
- Si está presente, llama a la función
upload_file(...)
y asigna la URL pública a una propiedad de entidad llamada imageUrl.
- De lo contrario, asigna una string vacía a la propiedad de entidad imageUrl.
quiz/webapp/questions.py
# TODO: Import the storage module
from quiz.gcp import storage, datastore
# END TODO
"""
uploads file into google cloud storage
- upload file
- return public_url
"""
def upload_file(image_file, public):
if not image_file:
return None
# TODO: Use the storage client to Upload the file
# The second argument is a boolean
public_url = storage.upload_file(
image_file,
public
)
# END TODO
# TODO: Return the public URL
# for the object
return public_url
# END TODO
"""
uploads file into google cloud storage
- call method to upload file (public=true)
- call datastore helper method to save question
"""
def save_question(data, image_file):
# TODO: If there is an image file, then upload it
# And assign the result to a new Datastore
# property imageUrl
# If there isn't, assign an empty string
if image_file:
data['imageUrl'] = str(
upload_file(image_file, True))
else:
data['imageUrl'] = u''
# END TODO
data['correctAnswer'] = int(data['correctAnswer'])
datastore.save_question(data)
return
- Guarda
questions.py
.
Ejecuta la aplicación y crea un objeto de Cloud Storage
- Guarda los archivos
...gcp/storage.py
y ...webapp/questions.py
y, luego, vuelve al comando de Cloud Shell.
- Vuelve a Cloud Shell para ejecutar la aplicación:
python run_server.py
-
Descarga un archivo de imagen a tu máquina local desde Almacenamiento de Google.
-
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 Quiz.
-
Haz clic en el vínculo Create Question.
-
Completa el formulario con los siguientes valores y haz clic en Save.
Campo de formulario |
Valor |
Autor |
Tu nombre |
Cuestionario |
Google Cloud Platform |
Título |
¿Con qué producto se relaciona este logotipo? |
Imagen |
Sube el archivo Google_Cloud_Storage_logo.png que descargaste anteriormente |
Respuesta 1 |
App Engine |
Respuesta 2 |
Cloud Storage (Selecciona el botón de selección Respuesta 2) |
Respuesta 3 |
Compute Engine |
Respuesta 4 |
Container Engine |
-
Vuelve a la consola de Cloud y dirígete al menú de navegación > Cloud Storage.
-
En la página Cloud Storage > Buckets, haz clic en el bucket correcto (con el nombre <Project ID>-media
).
Deberías ver tu nuevo objeto con el nombre Google_Cloud_Storage_logo.png
.
Subir objetos a tu bucket
Ejecuta la aplicación cliente y prueba la URL pública de Cloud Storage
-
Agrega /api/quizzes/gcp
al final de la URL de la aplicación.
Deberías ver que los datos JSON se mostraron al cliente en correspondencia a la pregunta que agregaste en la aplicación web.
La propiedad imageUrl debe tener un valor correspondiente al objeto en Cloud Storage.
-
Vuelve a la página de inicio de la aplicación y haz clic en Take Test.
-
Haz clic en GCP y responde cada pregunta.
Cuando llegues a la pregunta que acabas de agregar, deberías ver que la imagen se formateó dentro de la aplicación web del lado del cliente.
¡Felicitaciones!
Con esto concluye el lab Desarrollo de aplicaciones: Almacenamiento de archivos de imágenes y videos en Cloud Storage - Python. Usaste Cloud Storage para almacenar y recuperar datos de la aplicación.
Próximos pasos y más información
Última actualización del manual: 24 de enero de 2025
Prueba más reciente del lab: 24 de enero de 2025
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.