Introducción a Cloud Storage
Google Cloud Storage es un servicio de almacenamiento de objetos que permite almacenar y acceder a datos de manera segura y escalable. Es ideal para almacenar datos no estructurados como imágenes, videos, archivos de respaldo y datos de aplicaciones.
Conceptos Clave
- Buckets: Contenedores donde se almacenan los datos. Cada bucket tiene un nombre único y se configura con una región específica.
- Objetos: Los datos que se almacenan dentro de los buckets. Cada objeto tiene un nombre único dentro del bucket.
- Clases de almacenamiento: Diferentes niveles de almacenamiento que ofrecen un equilibrio entre costo y rendimiento.
- Control de acceso: Mecanismos para gestionar quién puede acceder a los datos y qué acciones pueden realizar.
Configuración de Cloud Storage
Crear un Bucket
-
Acceder a la consola de GCP:
- Navega a la consola de Google Cloud Platform.
- Selecciona el proyecto en el que deseas trabajar.
-
Crear un nuevo bucket:
- Ve a la sección "Storage" en el menú de navegación.
- Haz clic en "Create bucket".
- Asigna un nombre único al bucket.
- Selecciona la ubicación (región o multi-región).
- Elige una clase de almacenamiento (Standard, Nearline, Coldline, Archive).
- Configura las opciones de control de acceso y encriptación.
- Haz clic en "Create".
Ejemplo Práctico: Crear un Bucket
from google.cloud import storage
def create_bucket(bucket_name):
"""Crea un nuevo bucket en Google Cloud Storage."""
# Inicializa el cliente de almacenamiento
storage_client = storage.Client()
# Crea el bucket
bucket = storage_client.create_bucket(bucket_name)
print(f"Bucket {bucket.name} creado.")
# Llama a la función con el nombre del bucket
create_bucket('mi-nuevo-bucket')Subir Objetos a un Bucket
-
Seleccionar el bucket:
- En la consola de GCP, selecciona el bucket al que deseas subir los archivos.
-
Subir archivos:
- Haz clic en "Upload files" o "Upload folder".
- Selecciona los archivos o la carpeta que deseas subir.
- Haz clic en "Open" para iniciar la subida.
Ejemplo Práctico: Subir un Archivo
def upload_blob(bucket_name, source_file_name, destination_blob_name):
"""Sube un archivo a un bucket específico."""
# Inicializa el cliente de almacenamiento
storage_client = storage.Client()
# Selecciona el bucket
bucket = storage_client.bucket(bucket_name)
# Crea un blob en el bucket
blob = bucket.blob(destination_blob_name)
# Sube el archivo
blob.upload_from_filename(source_file_name)
print(f"Archivo {source_file_name} subido a {destination_blob_name}.")
# Llama a la función con los parámetros necesarios
upload_blob('mi-nuevo-bucket', 'ruta/al/archivo.txt', 'archivo_subido.txt')Clases de Almacenamiento
| Clase de Almacenamiento | Descripción | Uso Ideal |
|---|---|---|
| Standard | Alta disponibilidad y baja latencia. | Datos a los que se accede con frecuencia. |
| Nearline | Menor costo, pero con cargos por acceso. | Datos a los que se accede menos de una vez al mes. |
| Coldline | Aún menor costo, con mayores cargos por acceso. | Datos a los que se accede menos de una vez al año. |
| Archive | Costo más bajo, diseñado para almacenamiento a largo plazo. | Datos a los que se accede raramente, si es que alguna vez. |
Control de Acceso
Tipos de Control de Acceso
- Control de acceso a nivel de bucket: Permite definir permisos a nivel de bucket.
- Control de acceso a nivel de objeto: Permite definir permisos a nivel de objeto individual.
Ejemplo Práctico: Configurar Control de Acceso
def make_blob_public(bucket_name, blob_name):
"""Hace que un blob sea público."""
# Inicializa el cliente de almacenamiento
storage_client = storage.Client()
# Selecciona el bucket
bucket = storage_client.bucket(bucket_name)
# Selecciona el blob
blob = bucket.blob(blob_name)
# Hace que el blob sea público
blob.make_public()
print(f"Blob {blob_name} es ahora público y accesible en {blob.public_url}")
# Llama a la función con los parámetros necesarios
make_blob_public('mi-nuevo-bucket', 'archivo_subido.txt')Ejercicios Prácticos
Ejercicio 1: Crear y Configurar un Bucket
- Crea un bucket llamado
mi-bucket-ejercicio. - Configura el bucket para que use la clase de almacenamiento
Nearline. - Sube un archivo de texto llamado
ejemplo.txtal bucket.
Solución
def create_and_upload(bucket_name, source_file_name, destination_blob_name):
"""Crea un bucket y sube un archivo."""
storage_client = storage.Client()
# Crea el bucket con la clase de almacenamiento Nearline
bucket = storage_client.create_bucket(bucket_name, storage_class="NEARLINE")
# Sube el archivo
blob = bucket.blob(destination_blob_name)
blob.upload_from_filename(source_file_name)
print(f"Bucket {bucket.name} creado y archivo {source_file_name} subido a {destination_blob_name}.")
# Llama a la función con los parámetros necesarios
create_and_upload('mi-bucket-ejercicio', 'ruta/al/ejemplo.txt', 'ejemplo.txt')Ejercicio 2: Configurar Control de Acceso
- Haz que el archivo
ejemplo.txten el bucketmi-bucket-ejerciciosea público.
Solución
Conclusión
En esta sección, hemos aprendido sobre Google Cloud Storage, cómo crear y configurar buckets, subir archivos y gestionar el control de acceso. Estos conceptos son fundamentales para manejar datos en GCP de manera eficiente y segura. En el próximo módulo, exploraremos otros servicios principales de GCP, como Cloud SQL y App Engine.
Curso de Google Cloud Platform (GCP)
Módulo 1: Introducción a Google Cloud Platform
- ¿Qué es Google Cloud Platform?
- Configuración de tu cuenta de GCP
- Descripción general de la consola de GCP
- Comprensión de proyectos y facturación
Módulo 2: Servicios principales de GCP
Módulo 3: Redes y seguridad
Módulo 4: Datos y análisis
Módulo 5: Aprendizaje automático e IA
Módulo 6: DevOps y monitoreo
- Cloud Build
- Repositorios de código en la nube
- Cloud Functions
- Monitoreo de Stackdriver
- Cloud Deployment Manager
Módulo 7: Temas avanzados de GCP
- Híbrido y multi-nube con Anthos
- Computación sin servidor con Cloud Run
- Redes avanzadas
- Mejores prácticas de seguridad
- Gestión y optimización de costos
