Automatización de Datos: Interactuando con Cloud Storage mediante Python
Autor: Eduardo Martínez Agrelo
En los ejercicios anteriores gestionamos Cloud Storage mediante la consola web y Terraform. Sin embargo, en el mundo real, las aplicaciones necesitan leer y escribir archivos automáticamente. Como Ingeniero Cloud, debes saber cómo integrar tus desarrollos con la nube. En el examen Associate Cloud Engineer, es fundamental entender cómo funcionan las librerías cliente y cómo se gestiona la autenticación del código. En este ejercicio, crearemos un script en Python para subir archivos a nuestro bucket.
Client Libraries vs. APIs REST
Google Cloud ofrece dos formas principales de interactuar con sus servicios desde el código:
- APIs REST: Peticiones HTTP puras. Son universales pero complejas, ya que debes gestionar tú mismo las cabeceras de autenticación, los reintentos y el parseo de JSON.
- Cloud Client Libraries: Librerías oficiales (para Python, Go, Java, etc.) que envuelven la API REST. Es la opción recomendada y la que evaluará el examen, ya que maneja automáticamente la seguridad y ofrece un código mucho más legible e idiomático.
El Corazón de la Seguridad: Application Default Credentials (ADC)
Una pregunta típica de examen es: "¿Cómo se autentica tu script de Python con Google Cloud sin escribir la contraseña en el código?"
La respuesta es ADC (Application Default Credentials). Es una estrategia que siguen las librerías de Google para buscar credenciales automáticamente en este orden:
- Busca la variable de entorno
GOOGLE_APPLICATION_CREDENTIALSque apunta a un archivo JSON de clave de cuenta de servicio. - Si estás en una VM de Google Cloud (GCE, GKE, Cloud Run), usa la Service Account predeterminada de la máquina.
- En desarrollo local, usa las credenciales generadas al ejecutar
gcloud auth application-default login.
Permisos Necesarios: IAM para el Código
Recuerda que el código "hereda" los permisos de la identidad que lo ejecuta. Si tu script va a subir archivos (objetos), la identidad (ya sea tu usuario o una Service Account) debe tener al menos el rol:
roles/storage.objectCreator
Sin este permiso, el script de Python devolverá un error 403 Forbidden.
La Práctica: El paquete google-cloud-storage
En este ejercicio, instalaremos la librería oficial mediante pip y escribiremos una función que realice tres pasos básicos:
- Instanciar el cliente de almacenamiento (
storage.Client()). - Referenciar el bucket por su nombre único.
- Crear un "blob" (el objeto en la nube) y cargar los datos desde un archivo local.
Conclusión: Programación en la Nube
Al finalizar este ejercicio, habrás roto la barrera entre tu código local y la infraestructura de Google Cloud. Has aprendido a usar las herramientas profesionales de integración y a gestionar la seguridad del código mediante ADC, una competencia vital para cualquier desarrollador o arquitecto cloud.