Introducción a Amazon S3
Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento líderes en la industria. Los clientes de todas las industrias y de todos los tamaños pueden usar Amazon S3 para almacenar y proteger cualquier cantidad de datos para una variedad de casos de uso, como sitios web, aplicaciones móviles, copias de seguridad y restauración, archivo, aplicaciones empresariales, dispositivos IoT y análisis de big data.
Conceptos Clave
- Buckets: Contenedores para almacenar objetos en Amazon S3. Cada objeto se almacena en un bucket.
- Objetos: Los datos que almacenas en Amazon S3. Un objeto consiste en datos, metadatos y una clave única.
- Claves: Identificadores únicos para los objetos dentro de un bucket.
- Regiones: Ubicaciones geográficas donde se almacenan los datos de Amazon S3.
- Versionado: Permite mantener múltiples versiones de un objeto en el mismo bucket.
- Políticas de Bucket: Reglas que definen quién tiene acceso a los datos en un bucket y qué acciones pueden realizar.
Configuración Inicial
Crear un Bucket
- Accede a la consola de administración de AWS.
- Navega a Amazon S3.
- Haz clic en "Create bucket".
- Configura el nombre del bucket y la región.
- Configura las opciones de configuración adicionales (versionado, cifrado, etc.).
- Revisa y crea el bucket.
import boto3 # Crear un cliente S3 s3 = boto3.client('s3') # Crear un bucket bucket_name = 'mi-bucket-ejemplo' s3.create_bucket(Bucket=bucket_name)
Subir Objetos a un Bucket
Puedes subir objetos a un bucket de Amazon S3 utilizando la consola de administración de AWS, la CLI de AWS o el SDK de AWS.
Usando la Consola de Administración
- Selecciona el bucket.
- Haz clic en "Upload".
- Selecciona los archivos que deseas subir.
- Configura las opciones de permisos y almacenamiento.
- Haz clic en "Upload".
Usando el SDK de AWS (Boto3 en Python)
import boto3 # Crear un cliente S3 s3 = boto3.client('s3') # Subir un archivo file_name = 'ruta/al/archivo.txt' s3.upload_file(file_name, bucket_name, 'archivo.txt')
Acceso y Permisos
Políticas de Bucket
Las políticas de bucket son documentos JSON que definen permisos para el bucket y los objetos que contiene.
Ejemplo de política de bucket que permite el acceso público de solo lectura:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::mi-bucket-ejemplo/*" } ] }
Configuración de Políticas
- Selecciona el bucket.
- Navega a la pestaña "Permissions".
- Haz clic en "Bucket Policy".
- Introduce la política JSON.
- Guarda los cambios.
Versionado de Objetos
El versionado en Amazon S3 te permite mantener múltiples versiones de un objeto en el mismo bucket, lo que facilita la recuperación de versiones anteriores de los objetos.
Habilitar el Versionado
- Selecciona el bucket.
- Navega a la pestaña "Properties".
- Haz clic en "Versioning".
- Habilita el versionado.
Subir una Nueva Versión de un Objeto
import boto3 # Crear un cliente S3 s3 = boto3.client('s3') # Subir una nueva versión de un archivo file_name = 'ruta/al/nuevo_archivo.txt' s3.upload_file(file_name, bucket_name, 'archivo.txt')
Ejercicios Prácticos
Ejercicio 1: Crear y Configurar un Bucket
- Crea un bucket llamado "mi-bucket-ejercicio".
- Habilita el versionado en el bucket.
- Sube un archivo llamado "ejemplo.txt" al bucket.
Ejercicio 2: Configurar una Política de Bucket
- Configura una política de bucket que permita el acceso público de solo lectura a los objetos en "mi-bucket-ejercicio".
- Verifica que puedes acceder al archivo "ejemplo.txt" públicamente.
Soluciones
Solución al Ejercicio 1
import boto3 # Crear un cliente S3 s3 = boto3.client('s3') # Crear un bucket bucket_name = 'mi-bucket-ejercicio' s3.create_bucket(Bucket=bucket_name) # Habilitar el versionado s3.put_bucket_versioning( Bucket=bucket_name, VersioningConfiguration={ 'Status': 'Enabled' } ) # Subir un archivo file_name = 'ruta/al/ejemplo.txt' s3.upload_file(file_name, bucket_name, 'ejemplo.txt')
Solución al Ejercicio 2
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::mi-bucket-ejercicio/*" } ] }
Conclusión
En esta sección, hemos cubierto los conceptos básicos de Amazon S3, incluyendo la creación de buckets, la subida de objetos, la configuración de permisos y el versionado de objetos. Estos fundamentos te permitirán comenzar a utilizar Amazon S3 para almacenar y gestionar tus datos de manera eficiente. En el próximo módulo, exploraremos otros servicios principales de AWS, como Amazon RDS.
Curso de AWS
Módulo 1: Introducción a AWS
- ¿Qué es AWS?
- Configuración de tu cuenta de AWS
- Infraestructura global de AWS
- Consola de administración de AWS