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

  1. Buckets: Contenedores donde se almacenan los datos. Cada bucket tiene un nombre único y se configura con una región específica.
  2. Objetos: Los datos que se almacenan dentro de los buckets. Cada objeto tiene un nombre único dentro del bucket.
  3. Clases de almacenamiento: Diferentes niveles de almacenamiento que ofrecen un equilibrio entre costo y rendimiento.
  4. 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

  1. Acceder a la consola de GCP:

    • Navega a la consola de Google Cloud Platform.
    • Selecciona el proyecto en el que deseas trabajar.
  2. 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

  1. Seleccionar el bucket:

    • En la consola de GCP, selecciona el bucket al que deseas subir los archivos.
  2. 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

  1. Control de acceso a nivel de bucket: Permite definir permisos a nivel de bucket.
  2. 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

  1. Crea un bucket llamado mi-bucket-ejercicio.
  2. Configura el bucket para que use la clase de almacenamiento Nearline.
  3. Sube un archivo de texto llamado ejemplo.txt al 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

  1. Haz que el archivo ejemplo.txt en el bucket mi-bucket-ejercicio sea público.

Solución

make_blob_public('mi-bucket-ejercicio', 'ejemplo.txt')

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.

© Copyright 2024. Todos los derechos reservados