¿Qué es Amazon Simple Storage Service?

January 27th, 2023

Hoy vamos a realizar una introducción a Amazon Simple Storage Service (Amazon S3) uno de los muchos servicios de los que dispone AWS.

Aunque sea paradójico en un documento titulado que es Amazon S3, lo primero es aclarar que no es Amazon S3 y no es un servicio de alojamiento de archivos del tipo Dropbox, OneDrive o Google Drive, etc, ya que son servicios con una finalidad comercial diferente, que se asemejan más a Amazon Drive (aunque Drive está enfocado al almacenamiento multimedia para usuarios finales), por lo que si estás buscando una solución para guardar en la nube tus archivos personales Amazon S3 no es la mejor solución.

Amazon S3 es un servicio de almacenamiento de archivos (objetos heterogéneos). Y que quiere decir que es un sistema de almacenamiento de objetos heterogéneos, pues que solo puedes subir, o leer objetos completos, AWS llama objetos a los archivos con sus metadatos adjuntos. Es decir, no permite leer o modificar solo una parte del archivo. Una aplicación no podría añadir por ejemplo una línea de log al final de un archivo almacenado en Amazon S3, tendría que descargar el archivo, añadir la línea y volver a subirlo, cosa que no tiene sentido, para esas necesidades existe otros tipos de almacenamiento en AWS como es EBS.

Amazon S3 por ejemplo es muy útil para al almacenamiento de copias de seguridad (backups), en donde la aplicación de backup de una empresa genera el archivo de backup y lo sube Amazon S3 para que cuando haya que hacer una restauración, se pueda acceder a ese archivo, leer su contenido completo y restaurarlo. Otro uso muy frecuente es para el almacenamiento de archivos estáticos de una web o para almacenamiento de datos masivos de un datalake.

La administración se realiza desde la consola de AWS o a través la API proporcionada por AWS. Para la gestión de los objetos por los usuarios finales también se puede utilizar herramientas de terceros como CyberDuck.

simple-storage2

Consola de AWS S3

Tiene unas características muy interesantes.

Una de las más llamativas son que proporciona una garantía de almacenamiento de los datos de 99.999999999 € (11 nueves) es decir que el objeto que almacenes en Amazon S3 es muy difícil que se pueda perder, por problemas del servicio. Siempre puede caer un meteorito y destruir el planeta, pero en ese caso no nos va a importar que nuestro objeto ya no esté. En este punto hay que distinguir ente durabilidad que es lo que aseguran los 11 nueves y disponibilidad que está entre el 99.99% y el 99.5% dependiendo del tipo de almacenamiento deseado (lo veremos más adelante) esto significa que, aunque es dato es muy difícil que se pierda lo que sí puede ocurrir es que no esté disponible durante un corto periodo de tiempo.

Soporta objetos de hasta 5 TB (pero solo se pueden subir partes de 5Gb Max, por lo que habría que subir el objeto en multipart).

Tiene una capacidad teóricamente ilimitada (AWS asume que es capaz de ir añadiendo almacenamiento físico más rápido que los usuarios pueden subir datos).

Pagas solo por el espacio utilizado y por el tráfico saliente, el tráfico entrante de subir objetos es gratuito, veremos más adelante en detalle por lo que se paga.

La organización de los objetos en Amazon S3 es a través de los bucket que se definen a nivel de una región de AWS, por lo que el nombre del bucket ha de ser único en la región, por lo que es muy difícil que puedas crear un bucket “datos”, ya que el método de gestión de los objetos se realiza como URLs, un ejemplo de la ruta de un objeto tendría la forma: https://qualoom-expertise-technology.s3.eu-west-1.amazonaws.com/Directorio1/archivo1.txt

Tiene la opción de activar el versionado de un bucket lo que nos permite recuperar un objeto en el estado de una versión previa, si activáis esta opción tendremos que definir una política de ciclo de vida de vencimiento no actual para limitar el número de versiones a almacenar.

Otra opción muy interesante es que podemos establecer ciclos de vida de los datos de un bucket, no solo para las versiones, por ejemplo, si en un bucket almacenamos los logs de la ejecución de una implantación podemos tener definida una política de ciclo de vida que los elimine al cabo de cierto tiempo en el que consideramos que ya no son necesarios. Pero los ciclos de vida no solo sirven para borrar los datos, tienen otro uso muy interesante y es que puedes definir reglas para que los datos pasen a distintos almacenamientos, por ejemplo un bucket en el que almacenas facturas que has de mantener por norma 5 años, sabes que lo habitual es que durante los primeros meses si sea habitual consultarlas, pero que después son solo necesarias para cubrir normativa, puedes crear una política que los objetos que tengan más de 3 meses los cambie de almacenamiento por ejemplo a Glacier, que es el almacenamiento más económico, pero la lectura del objeto es más cara que la de Amazon S3, aparte de no ser instantánea ya puede tardar hasta 12 h desde que se solicita hasta que se obtiene dependiendo de tipo.

También se pueden definir a nivel de bucket la replicación entre distintas zonas de disponibilidad o tipos de almacenamiento. Si no estás familiarizado con el término de zonda de disponibilidad te recomiendo que revieses este otro artículo.

Respecto a la seguridad se pueden hacer públicos para que sean accesibles desde internet (esto es interesante para publicar webs estáticas a bajo coste) o lo habitual es que se gestione los accesos mediante ACLs o Políticas de IAM.

Como acabamos de comentar otra funcionalidad que tiene la opción de si definimos un bucket como público o le ponemos un CDN delante podemos servir una página web estática con soporte de documento índice y documentos de error personalizados en la que solo pagaríamos por el almacenamiento y el tráfico saliente.

Hay muchas más funcionalidades interesantes como el poder establecer notificaciones, el detonar llamadas a Lambda para ejecutar código, etc. A lo largo del documento hemos realizado menciones a que hay distintos tipos de almacenamiento vamos a repasarlos un poco.

  • Amazon S3 Intelligent-Tiering para el ahorro automático de costos destinado a los datos con patrones de acceso desconocidos o cambiantes.

  • Amazon S3 Standard para los datos a los que accede con frecuencia.

  • Amazon S3 Standard-Infrequent Access (Amazon S3 Standard-IA) para los datos a los que accede con menor frecuencia.

  • Amazon S3 One Zone-Infrequent Access (Amazon S3 One Zone-IA) para los datos a los que accede con menor frecuencia y requieren menor disponibilidad.

  • Amazon S3 Glacier Instant Retrieval para los datos de archivo que requieren acceso inmediato.

  • Amazon S3 Glacier Flexible Retrieval (antes Amazon S3 Glacier) para los datos de largo plazo a los que se accede de forma inusual y que no requieren acceso inmediato.

  • Amazon S3 Glacier Deep Archive (Amazon S3 Glacier Deep Archive) para el archivo a largo plazo y la preservación digital con recuperación en horas al costo más bajo de almacenamiento en la nube.

  • Amazon S3 Outposts. Si tiene requisitos de residencia de datos que no puede cumplir en una región de AWS existente, puede utilizar la clase de almacenamiento para almacenar sus datos de Amazon S3 en sus propias instalaciones.

En todas las referencias que lean, verán que se hace referencia a que Amazon S3 es un almacenamiento de bajo coste y que Glacier es aún más barato, pero ¿Cuánto cuesta?

simple-storage4

Como en la mayoría de los servicios cloud de AWS el estandarte es “Pague solo por lo que utiliza” pero, ¿qué es lo que utilizas cuando utilizas Amazon S3?

Por un lado, está lo más obvio y fácil de calcular los GB de datos almacenados, se paga por la lo que ocupan los objetos en Amazon S3 y se hacen descuentos por volumen de datos, pero cuando tienes muchos datos, el primer escalón es hasta 50 TB/mes, el segundo a partir de 450 TB/mes y 500 TB/mes.

Otro factor que influye en el precio es el tipo de almacenamiento, por ejemplo, en Irlanda los precios van de 0.00099 $/GB/mes de Amazon S3 Glacier Deep Archive a los 0.023 $/Gb/mes de Amazon S3 Standard.

Veréis que he hecho referencia a la región de Irlanda y es que el precio también varía en función de la región, por ejemplo, en irlanda Amazon S3 Standard son 0.023, pero en la región de São Paulo el mismo tipo está a 0.0405 $/Gb/mes. (a partir de ahora nos referiremos a los costes actuales en la región de irlanda).

El almacenamiento, generalmente supone el mayor gasto de Amazon S3, pero no es por lo único que se paga, también se paga por las solicitudes y recuperaciones de datos, es decir se paga por cada PUT, COPY, POST, LIST, GET, SELECT, Transición de ciclo de vida y Recuperaciones de datos. En la mayoría de los casos de uso no suponen un gran gasto las solicitudes (por ejemplo pos put, copy post list tienen un precio 0.005 $/por cada 1000 solicitudes) pero la recuperación (solo aplica a los tipos infrequent Access y Glacier) sí pude suponer un coste a tener en cuenta, por ejemplo en Amazon S3 Glacier Instant Retrieval el precio solo de la recuperación es de 0.03 $/GB, si tuviéramos que recuperar un archivo de backup de un servidor de 500Gb tendría un coste de 15 $ por eso en Glacier se han de almacenar datos que no sea habitual tener que recuperarlos, ya que en Amazon S3 Standard no tiene coste de recuperación (aunque si por la transferencia de datos).

La transferencia de datos es otra cosa que se paga y depende del uso puede ser importante, AWS no es tonta y la subida de datos a Amazon S3 no tiene coste, pero la descarga si (después de los primeros 100Gb/mes).

La salida de datos hacia internet empieza en 0.09 $/GB hasta los 10 TB/mes y en función del volumen puede llegar a los 0.05 $/Gb para consumos de más de 150 TB/mes, suponiendo que ya hemos gastado los 100 GB/mes gratuitos y que estamos en el escalón de consumo de menos de 10 TB/mes en ejemplo de antes de una recuperación de un backup de 500Gb la transferencia de datos serian 45 $ que además si estaba en Amazon S3 Glacier Instant Retrieval habría que añadir los 15 $ de la recuperación.

También hay coste si la transferencia se hace entre regiones distintas de AWS a unos 0.02 $/Gb que se aplica si se mueve objetos entre bucket de distintas regiones.

No tiene coste de transferencia entre bucket o servicios de AWS de la misma región, es decir, los datos los lees desde una instancia de EC2 de la misma región no te cobran transferencia.

Lo mejor para hacerse una ida real de los costes de Amazon S3 es utilizar la Calculadora de precios de AWS

simple-storage5

Con este artículo hemos ofrecido una visión general del servicio de Amazon S3. Si están interesados en profundizar en sus características, uso e implantación de soluciones cloud, recomendamos la documentación de AWS que podéis encontrar al final de este artículo.

Os invitamos a seguir aprendiendo y profundizando en temas relacionados con la tecnología a través de nuestro blog y nuestras redes sociales.

Blog Twitter LinkedIn