ID de región
REGION_ID
es un código abreviado que Google asigna en función de la región que seleccionas cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r
se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.
Obtén más información acerca de los ID de región.
Aprende cómo habilitar el acceso de Cloud Storage a tu app de Python en App Engine y cómo crear, escribir, leer y enumerar archivos en el bucket de Cloud Storage.
En el instructivo, suponemos que estás familiarizado con Python y que ya configuraste tu entorno de desarrollo.
Cuando se ejecuta esta muestra, se ejecuta una secuencia de comandos y se escribe el resultado en el navegador. La secuencia de comandos muestra las siguientes funciones de la biblioteca cliente de Cloud Storage:
- Crear un archivo y escribirlo en un bucket
- Leer el archivo y obtener los metadatos
- Crear varios archivos y, luego, enumerarlos desde el bucket
- Enumerar los archivos que se acaban de agregar al bucket
- Leer ese mismo conjunto de archivos
- Borrar ese conjunto de archivos
Objetivos
- Describir el proyecto de Python para ver el diseño y los archivos requeridos
- Entender el código para conectarse a Cloud Storage
- Entender el código para crear, escribir, leer, enumerar y borrar archivos
- Entender el código para los reintentos
- Compilar y probar la app en tu servidor de desarrollo local
- Implementar la app para la producción en Google App Engine
Costos
App Engine tiene un nivel de uso gratuito. Si el uso total de App Engine es menor que los límites especificados en la cuota gratuita de App Engine, no se aplican cargos por este instructivo.
Antes de comenzar
Antes de ejecutar esta muestra, necesitas un ID del proyecto, la herramienta de línea de comandos de gcloud
y un bucket de Cloud Storage:
Crea un proyecto nuevo de la consola de Google Cloud o recupera el ID del proyecto existente desde la consola de Google Cloud:
Instala y, luego, inicializa la CLI de Google Cloud:
Enumera los ID de los proyectos de la consola de Google Cloud con gcloud
Desde la línea de comandos, ejecuta:
gcloud projects list
Clona el proyecto del instructivo
Para clonar el proyecto, sigue estos pasos:
Clona la biblioteca cliente y la app de muestra (demostración) en tu máquina local.
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
Como alternativa, puedes descargar la muestra como un archivo ZIP y extraerla.
Navega al directorio correspondiente en el proyecto clonado o descargado:
cd python-docs-samples/appengine/standard/storage/appengine-client
Instala dependencias
La herramienta virtualenv
te permite crear un entorno de Python limpio en tu sistema.
Para el desarrollo de App Engine, esto ayuda a garantizar que el código que pruebes de forma local sea similar al entorno en el que se implementará el código. Para obtener más información, consulta Usa bibliotecas de terceros.
Para instalar virtualenv
y las dependencias de muestra, sigue estos pasos:
macOS/Linux
- Si no tienes virtualenv, instálalo en todo el sistema mediante
pip
.sudo pip install virtualenv
- Crea un entorno aislado de Python:
virtualenv env
source env/bin/activate
- Si no estás en el directorio que contiene el código de muestra, navega al directorio que contiene el código de muestra
hello_world
. Luego, instala las dependencias:cd YOUR_SAMPLE_CODE_DIR
pip install -t lib -r requirements.txt
Windows
Si tienes Google Cloud CLI instalado, también deberías tener instalado Python 2.7, por lo general, en C:\python27_x64\
(para sistemas de 64 bits). Usa PowerShell para ejecutar tus paquetes de Python.
- Ubica la instalación de PowerShell.
- Haz clic derecho en el acceso directo a PowerShell y, luego, inícialo como administrador.
-
Intenta ejecutar el comando
python
. Si no se encuentra, agrega la carpeta de Python a laPATH
de tu entorno.$env:Path += ";C:\python27_x64\"
- Si no tienes virtualenv, instálalo en todo el sistema mediante
pip
:python -m pip install virtualenv
- Crea un entorno de Python aislado.
python -m virtualenv env
. env\Scripts\activate
- Navegue al directorio del proyecto e instale las dependencias. Si no estás en el directorio que contiene el código de muestra, navega al directorio que contiene el código de muestra
hello_world
. Luego, instala las dependencias:cd YOUR_SAMPLE_CODE_DIR
python -m pip install -t lib -r requirements.txt
El código de muestra que clonaste o descargaste ya contiene un archivo appengine_config.py
, que se necesita para indicarle a App Engine que use la carpeta lib
a fin de cargar las dependencias de forma local y cuando se implementen.
Ejecuta de manera local
Para ejecutar la muestra de forma local, haz lo siguiente:
En el subdirectorio del proyecto
python-docs-samples/appengine/standard/storage/appengine-client
, ejecuta la app en el servidor de desarrollo local:python3 CLOUD_SDK_ROOT/bin/dev_appserver.py .
Espera el mensaje de operación correcta, que debería verse de la siguiente manera:
INFO 2016-04-12 21:33:35,446 api_server.py:205] Starting API server at: http://localhost:36884 INFO 2016-04-12 21:33:35,449 dispatcher.py:197] Starting module "default" running at: http://localhost:8080 INFO 2016-04-12 21:33:35,449 admin_server.py:116] Starting admin server at: http://localhost:8000
Visita esta URL en el navegador:
La aplicación se ejecutará cuando se carga la página y mostrará el resultado al navegador para indicar lo que se ejecutó. El resultado se verá así:
Presiona Control+C para detener el servidor de desarrollo.
Explicación de app.yaml
El archivo app.yaml
especifica los detalles de configuración de la aplicación:
Para obtener más información sobre las opciones de configuración disponibles en este archivo, consulta la referencia de app.yaml.
Explicación de las importaciones
El archivo main.py
contiene las importaciones típicas que se usan para acceder a Cloud Storage a través de la biblioteca cliente:
Necesitas el módulo os
y la API de app_identity
para obtener el nombre del bucket predeterminado en el entorno de ejecución. Necesitarás este nombre del bucket para todas las operaciones de acceso de Cloud Storage.
La muestra también usa el framework web webapp2
.
Especifica el bucket de Cloud Storage
Antes de realizar cualquier operación en Cloud Storage, debes proporcionar el nombre del bucket. La forma más fácil de hacer esto es con el bucket predeterminado para tu proyecto, el que puedes obtener de la siguiente manera:
Escribe un archivo en Cloud Storage
En el siguiente ejemplo, se muestra como escribir en el bucket:
Ten en cuenta que en la llamada para open
(abrir) el archivo en el que deseas escribir, el ejemplo especifica determinados encabezados de Cloud Storage que escriben metadatos personalizados del archivo. Estos metadatos se pueden recuperar mediante cloudstorage.stat
. Puedes encontrar la lista de encabezados compatibles en la referencia de cloudstorage.open
.
También, ten en cuenta que no se configuró el encabezado x-goog-acl
. Esto significa que la LCA predeterminada de Cloud Storage de lectura pública se aplicará al objeto cuando se escriba en el bucket.
Por último, observa la llamada para close
(cerrar) el archivo después de terminar la escritura. Si no lo haces, el archivo no se escribirá en Cloud Storage. Ten en cuenta que después de llamar a close
, no puedes agregar el archivo. Si necesitas modificar un archivo, tienes que abrirlo de nuevo en modo de escritura, lo cual reemplaza el archivo, no lo agrega.
Lee un archivo desde Cloud Storage
En el siguiente ejemplo, se muestra cómo leer un archivo del bucket:
En la muestra, se indica cómo mostrar las líneas seleccionadas del archivo que se lee, en este caso, la línea de apertura y las últimas 1,000 líneas, mediante seek
.
Ten en cuenta que no se especifica ningún modo en el código anterior cuando el archivo está abierto como lectura. La opción predeterminada para open
es el modo de solo lectura.
Enumera el contenido del bucket
En el código de muestra, se indica cómo desplazarse por un bucket con una gran cantidad de archivos. A fin de desplazarse por una lista de contenidos del bucket, usa los parámetros marker
y max_keys
:
Ten en cuenta que el nombre completo del archivo se muestra como una string sin delimitadores de directorio.
Si deseas mostrar el archivo con su jerarquía de directorios más reconocible, establece el parámetro delimiter
en el delimitador del directorio que deseas usar.
Borra archivos
En la muestra de código, se muestran los archivos que se borraron, en este caso, la eliminación de todos los archivos agregados durante la ejecución de la aplicación. No debes hacerlo en tu código, ya que esta es solo una función de limpieza de esta muestra:
Implementa la muestra
Para implementar y ejecutar la muestra en App Engine, sigue estos pasos:
Para subir la app de muestra, ejecuta el siguiente comando desde el directorio
python-docs-samples/appengine/standard/storage/appengine-client
donde se encuentra el archivoapp.yaml
:gcloud app deploy
Marcas opcionales:
- Incluye la marca
--project
para especificar un ID del proyecto alternativo de la consola de Google Cloud al que inicializaste como predeterminado en la CLI de gcloud. Ejemplo:--project [YOUR_PROJECT_ID]
- Incluye el marcador
-v
para especificar un ID de versión; de lo contrario, se generará uno automáticamente. Ejemplo:-v [YOUR_VERSION_ID]
- Incluye la marca
Cuando se complete el proceso de implementación, puedes ver la aplicación en
https://PROJECT_ID.REGION_ID.r.appspot.com
si ejecutas el siguiente comando:gcloud app browse
La app de
demo
se ejecuta cuando cargas la página, de igual forma que cuando la ejecutaste de forma local. Sin embargo, ahora la app escribirá y leerá desde el bucket de Cloud Storage.
Para obtener más información acerca de cómo implementar la app desde la línea de comandos, consulta Implementa una app de Python 2.
¿Qué sigue?
- Obtén más información sobre los conceptos básicos de Cloud Storage.
- Lee la referencia de funciones de la biblioteca cliente de Cloud Storage.
- Lee la referencia de la clase RetryParams.
- Lee la referencia de Manejo de errores.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.