Amazon S3 – Simple Storage

S3 es la solución de Amazon para tener un “disco duro” en la nube y realizar nuestras copias de seguridad. Al ser un almacenamiento basado en objetos, no es recomendable utilizarlo para servidores de producción. En ese caso, necesitaríamos un almacenamiento basado en bloques. Es decir, en S3 no podemos instalar sistemas operativos o bases de datos, por ejemplo.

S3 es un tipo de almacenamiento durable diseñado con tolerancia a fallos. Amazon garantiza la disponibilidad del servicio S3 en un 99,9% y la durabilidad de los datos en un 99,999999999%.

Los archivos nuevos que subamos estarán disponible inmediatamente pero las actualizaciones o eliminación de los mismos pueden tardar un tiempo.

Podemos acceder a S3 mediante una interfaz WEB desde la consola de Amazon.

Tipos de almacenamiento de S3

  • Estandar
  • IA – Infrequently accessed: Datos a los que accedemos esporádicamente pero, cuando lo hacemos, requieren una rápida respuesta. Tiene un menor coste que S3 pero las descargas tienen un coste extra.
  • RRS – Reduced redundancy Storage (Redundancia reducida): Diseñado con una durabilidad del 99,99%. Se utiliza para almacenar datos poco importantes. Por ejemplo, la previsualización de una imagen. SI se perdiera este archivo, lo podríamos volver a generar con la imagen original.
  • Glaciar: Tiene un coste muy bajo. Solamente se utiliza para copias de seguridad. Restaurar un archivo puede tardar entre 3 y 5 horas.
S3 Tabla tipos almacenamiento

Creación de un contenedor S3

Los contenedores S3 pueden ser considerados como carpetas o directorios cuyo nombre debe ser único en toda la infraestructura S3 de Amazon.

Crear un contenedor es extremadamente fácil. Únicamente tendremos que ir a la consola y seleccionar el servicio S3.

S3 Acceso
S3 Crear bucket 1
S3 Crear bucket 2
S3 Crear bucket 3

Veremos que podemos almacenar los logs en otro contenedor diferente.

Cada vez que guardamos una nueva versión de un archivo, estamos ocupando espacio adicional (en cada versión) que será facturado.

S3 Crear bucket 4
S3 Crear bucket 5

Podemos cambiar la configuración de nuestro contenedor una vez creado (versionado, permisos, réplica, etc.). Si activamos el versionado, éste será irreversible.

S3 Crear bucket 6

Subir un archivo no tiene más misterio que darle al botón “upload”. Obviamente, podremos configurar permisos de acceso a cada archivo subido.

S3 Permisos archivo

Haciendo click en Storage, podemos cambiar el tipo de almacenamiento, por ejemplo, a redundancia reducida:

S3 Storage

Activar la réplica de un contenedor S3

Las réplicas de contenedores sirven para hacer copias de seguridad de nuestro contenedor origen a otro contenedor destino que puede estar ubicado en otra zona geográfica.

En el siguiente ejemplo, activaremos la réplica de nuestro contenedor que está en Irlanda hacia otro contenedor que está en Oregón (EEUU).

Para activar la réplica es obligatorio activar el versionado tanto en el contenedor origen como en el destino. El versionado no puede ser deshabilitado.

Sólo se replican los objetos nuevos o las nuevas versiones de éstos.

S3 Versionado
S3 Replica 1
S3 Replica 2
S3 Replica 3
S3 Replica 4
S3 Replica 5
S3 Replica 6

Como vemos, ahora tenemos dos contenedores en nuestra cuenta:

S3 Contenedor replicado

Como solamente se replican los nuevos archivos o sus nuevas versiones, subimos una nueva versión del archivo “test.txt”:

S3 Subir nueva version de archivo

Una observación: Las nuevas versiones de los archivos pueden tener distintas formas de almacenamiento.

Esperamos cinco minutos y vemos que ya se ha replicado el archivo en el contenedor de réplica:

S3 Archivo replicado

Copias de seguridad con S3

Queremos copiar el directorio /app/puerto53 de nuestro servidor a un bucket S3 que hemos llamado puerto53.com-backup.

Damos por hecho que hemos instalado la línea de comandos de AWS en el servidor que inicia la copia.

Lo haremos de la siguiente manera: 

[puerto53@prt53ws1 Backups]$ cat backup.sh
PATH=$PATH:/usr/bin
/usr/bin/aws s3 cp /app/puerto53 s3://puerto53.com-backup/puerto53_$(date +%Y%m%d) --recursive --storage-class STANDARD_IA
[puerto53@prt53ws1 Backups]$

Una vez finalizado el comando, observamos que ya tenemos disponibles los datos en nuestro bucket:

S3 Copia de seguridad por linea de comandos

Si el objetivo del contenedor S3 es crear una página WEB con un nombre público en Internet, te interesará saber cómo acceder a él mediante HTTPS.

Replicar un contenedor S3 a otra región

Aunque S3 es un servicio global de almacenamiento que ya copia los objetos en diferentes zonas geográficas, puede que nos interese replicar los datos en lugares más alejados por temas legales, de menor latencia, cambiar el propietario de los datos o configuraciones de cluster, por ejemplo.

Configurar la réplica de un contenedor es muy sencillo:

  • Entramos dentro del bucket S3 que nos interese replicar.
  • Activamos el versionado, si no lo tenemos habilitado todavía.
  • Vamos al menú «Management».
  • Entramos en «Replication» y aquí configuramos los datos que nos pide el formulario WEB que, básicamente son:
    • Contenedor de destino. Podemos crear uno nuevo si lo deseamos.
    • Zona geográfica de destino.
    • Si queremos replicar todo el contenedor o sólo una serie de datos concretos.
    • El rol que vamos a utilizar para replicar los datos. Podemos crear un rol nuevo si lo necesitamos.
Bucket S3 Replica

Crear una página WEB estática con Amazon AWS S3

El servicio de Amazon AWS S3 permite crear un contenedor o bucket S3 para que sirva una página WEB estática. Para este ejemplo, primero creo un nuevo contenedor público al que llamaré media.puerto53.com.

Bucket S3 public

A continuación, entramos dentro del contenedor y le indicamos que va a servir una página estática desde el menú propiedades y Static website hosting.

Bucket S3 static website hosting

Ahora quiero personalizar el nombre público del servicio a media.puerto53.com. Esto lo hago desde el servicio Route53, creando un nuevo alias que apunte al bucket S3 que acabo de crear, seleccionándolo en la lista del campo Alias Target.

Route53 Alias

Espero un minuto aproximadamente a que se actualicen los DNSs. Subo una foto al contenedor S3 y pruebo de conectarme a la URL de la foto con el nombre público del contenedor. Como podemos comprobar a continuación, la imagen carga.

Redireccionar un contenedor AWS S3 de HTTP a HTTPS

En el artículo punto anterior explicaba cómo crear un bucket o contenedor S3 para crear una página WEB estática asociada a un nombre público en Internet. Sin embargo, el acceso a través del nombre público lo realizaba mediante HTTP.

Lo que quiero ahora es acceder por HTTPS.

Para este ejemplo, he creado el contenedor público media.puerto53.com, donde subiré contenido multimedia.

Bucket S3 public

que está configurado como sitio WEB de contenido estático.

Bucket S3 static website hosting

Hasta aquí, todo igual que en el artículo que mencionaba anteriormente.

El siguiente paso para la transformación de HTTP a HTTPS, es crear un CDN configurada para redireccionar tráfico HTTP a HTTPS.

En el artículo CloudFront – Redes de distribución de contenido (CDN) – Amazon AWSexplico cómo crear CDNs. Para este caso concreto, la he configurado de la siguiente manera:

CloudFront Edit mode

El certificado SSL hay que crearlo mediante el botón indicado en rojo y, si eliges la verificación mediante correo electrónico, te llegará uno para su aprobación en un minuto. En el artículo Uso de certificados SSL en Amazon AWS explico cómo crear certificados SSL en Amazon AWS.

Una vez aprobado, puedes elegir el certificado SSL en el campo «Custom SSL Certificate».

Como he creado la CDN previamente, he entrado en modo edición para mostrar algunos de los campos elegidos, pero aquí no aparece uno de los más importantes que hay que elegir durante el proceso de creación: La redirección de HTTP a HTTPS.

CDN Redirect HTTP to HTTPS

La creación de la CDN tardará un ratito. Puede que media hora.

Una vez creada, vamos al servicio de AWS Route53 para crear el nombre público en Internet y relacionarlo con el recurso de CDN.

Route53 CDN Alias

Esperamos un minuto a que se actualicen los DNSs y ya podemos probar el acceso al bucket S3 mediante HTTPS:

Bucket S3 HTTPS

Te puede interesar

COMPÁRTEME

Deja un comentario