Introducción a Amazon S3: cómo funciona el almacenamiento de objetos en la nube
Amazon Simple Storage Service (S3) es un popular servicio de almacenamiento en la nube que forma parte de Amazon Web Services (AWS). El almacenamiento en la nube de Amazon S3 ofrece una alta fiabilidad, flexibilidad, ampliabilidad y accesibilidad. El número de objetos y la cantidad de datos almacenados en Amazon S3 son ilimitados. El almacenamiento en la nube de S3 resulta atractivo para las empresas porque solo se paga por lo que se utiliza.
Sin embargo, la terminología y la metodología pueden dar lugar a malentendidos y dificultades para los nuevos usuarios de Amazon S3. ¿Dónde se almacenan los datos de S3? ¿Cómo funciona el almacenamiento de Amazon S3? En esta entrada del blog se explican los conceptos principales y el principio de funcionamiento del almacenamiento en la nube de Amazon S3.
Acerca del almacenamiento de Amazon S3
Amazon S3 fue el primer servicio en la nube de AWS y se lanzó en 2006. Desde entonces, la popularidad de este servicio de almacenamiento no ha dejado de crecer. En la actualidad, Amazon ofrece una amplia gama de servicios en la nube, pero el almacenamiento en la nube de Amazon S3 es el más utilizado. Además del almacenamiento de Amazon S3, AWS ofrece volúmenes de Amazon EBS para EC2 y Amazon Drive. Sin embargo, estos tres servicios tienen usos y fines diferentes.
EBS (Elastic Block Storage) Los volúmenes para instancias de EC2 (Elastic Compute Cloud) son discos virtuales para máquinas virtuales alojadas en la nube de Amazon. Como se puede deducir del nombre EBS, se trata de un almacenamiento en bloques en la nube que es el equivalente a las unidades de disco duro de los ordenadores físicos. Se puede instalar un sistema operativo en un volumen EBS conectado a una EC2 instancia.
Amazon Drive (antes conocido como Amazon Cloud Drive) es el equivalente a Google Drive y a Microsoft OneDrive. Amazon Drive tiene un intervalo de funciones más reducido que Amazon S3. Amazon Drive se posiciona como un servicio de almacenamiento en la nube para hacer backup de fotos y otros datos de los usuarios.
Amazon S3 El almacenamiento en la nube es un servicio de almacenamiento basado en objetos. No se puede instalar un sistema operativo cuando se utiliza el almacenamiento de Amazon S3, ya que no se puede acceder a los datos a nivel de bloque, tal y como lo requiere un sistema operativo. Si necesitas montar el almacenamiento de Amazon S3 como una unidad de red en tu sistema operativo, utiliza un sistema de archivos en el espacio de usuario. Lee la entrada del blog sobre montar el almacenamiento en la nube S3 en diferentes sistemas operativos. Google Cloud es el equivalente al almacenamiento en la nube de Amazon S3.
Conceptos principales de Amazon S3
Si vas a utilizar Amazon S3 por primera vez, es posible que algunos conceptos te resulten inusuales y desconocidos. La metodología de almacenamiento de datos en la nube de S3 difiere del almacenamiento en discos duros tradicionales, unidades de estado sólido o matrices de discos. A continuación se ofrece una visión general de los principales conceptos y tecnologías utilizados para almacenar y gestionar datos en el almacenamiento en la nube de Amazon S3.
¿Cómo almacena S3 los archivos?
Como se ha explicado anteriormente, los datos en Amazon S3 se almacenan como objetos. Este enfoque proporciona un almacenamiento altamente ampliable en la nube. Los objetos pueden ubicarse en diferentes unidades de disco físicas distribuidas por todo un centro de datos. En los centros de datos de Amazon se utiliza hardware, software y sistemas de archivos distribuidos especiales para proporcionar una alta ampliabilidad. La redundancia y el control de versiones son funciones implementadas mediante el enfoque de almacenamiento en bloques. Cuando un archivo se almacena en Amazon S3 como un objeto, se almacena en varios lugares (como discos, centros de datos o zonas de disponibilidad) simultáneamente de forma predeterminada. El servicio Amazon S3 comprueba periódicamente la coherencia de los datos mediante la verificación de las sumas hash de control. Si se detecta una corrupción de datos, el objeto se recupera utilizando los datos redundantes. Los objetos se almacenan en buckets de Amazon S3. De forma predeterminada, se puede acceder a los objetos almacenados en Amazon S3 y realizar su gestión a través de la interfaz web.
¿Qué es el almacenamiento de objetos S3?
El almacenamiento de objetos es un tipo de almacenamiento en el que los datos se guardan como objetos en lugar de como bloques. Este concepto resulta útil para la backup, el archivado y la ampliabilidad en entornos de alta carga.
Objects son las entidades fundamentales del almacenamiento de datos en los buckets de Amazon S3. Un objeto consta de tres componentes principales: el contenido del objeto (los datos almacenados en él, como un archivo o un directorio), el identificador único del objeto (ID) y los metadatos. Los metadatos se almacenan como pares clave-valor y contienen información como el nombre, el tamaño, la fecha, los atributos de seguridad, el tipo de contenido y la URL.
Cada objeto cuenta con una lista de control de acceso (ACL) para configurar quién tiene permiso para acceder al objeto. El almacenamiento de objetos de Amazon S3 permite evitar cuellos de botella en la red durante las horas punta, cuando el tráfico hacia los objetos almacenados en el almacenamiento en la nube de S3 aumenta significativamente. Amazon proporciona un ancho de banda de red flexible, pero cobra por el acceso de red a los objetos almacenados. El almacenamiento de objetos es adecuado cuando un gran número de clientes debe acceder a los datos (alta frecuencia de lectura). La búsqueda a través de metadatos es más rápida en el modelo de almacenamiento de objetos.
Lee también sobre Cifrado de Amazon S3 que puede ayudarte a proteger los datos almacenados en el almacenamiento en la nube de Amazon S3 y a mejorar la seguridad.
Los buckets
A bucket son contenedores lógicos fundamentales donde se almacenan los datos en el almacenamiento de Amazon S3. Puedes almacenar una cantidad infinita de datos y un número ilimitado de objetos en un bucket. Cada objeto de S3 se almacena en un bucket. Existe un límite de 5 TB para el tamaño de un objeto almacenado en un bucket. Los buckets se utilizan para organizar el espacio de nombres al más alto nivel y sirven para el control de acceso.
Claves
Un objeto tiene una unique key después de ser subido a un bucket. Esta clave es una cadena de caracteres que imita una jerarquía de directorios. Conocer la clave te permite acceder al objeto en el bucket. Un bucket, una clave y un ID de versión identifican a un objeto de forma única. Por ejemplo, si el nombre de un bucket es blog-bucket01 , la región en la que se encuentran los centros de datos que almacenan tus datos es s3-eu-west-1 y el nombre del objeto es test1.txt (un archivo de texto), la URL del archivo que necesitas, almacenado como objeto en el bucket, es: https://blog-bucket01.s3-eu-west-1.amazonaws.com/test1.txt
Si deseas compartir objetos con otros usuarios, debes configurar los permisos editando los atributos de los objetos. Del mismo modo, puede crear una carpeta TextFiles y guardar el archivo de texto en esa carpeta:
https://blog-bucket01.s3-eu-west-1.amazonaws.com/TextFiles/test1.txt
Hay dos tipos de URL que se pueden utilizar:
- bucketname.s3.amazonaws.com/objectname
- s3.amazon.aws.com/bucketname/objectname
Regiones de AWS
Amazon cuenta con centros de datos en diferentes regiones de todo el mundo, entre ellas EE. UU., Irlanda, Sudáfrica, India, Japón, China, Corea, Canadá, Alemania, Italia y Gran Bretaña. Puedes seleccionar la región que desees al crear un bucket. Se recomienda seleccionar la región más cercana a ti o a tus clientes para reducir la latencia de la conexión de red o minimizar los costes (ya que el precio del almacenamiento de datos varía en función de la región). Los datos almacenados en una región concreta de AWS nunca salen de los centros de datos de esa región hasta que los migres manualmente. Las regiones de AWS están aisladas entre sí para garantizar la tolerancia a fallos y la estabilidad.
Cada región contiene zonas de disponibilidad, que son ubicaciones aisladas dentro de una región de AWS. Hay al menos tres zonas de disponibilidad disponibles para cada región con el fin de prevenir fallos causados por desastres como incendios, tifones, huracanes, inundaciones, etc.
El modelo de consistencia de datos
Se realiza una comprobación de consistencia de «lectura después de escritura» para los objetos almacenados en Amazon S3. Amazon S3 replica los datos entre servidores y centros de datos dentro de una región seleccionada para lograr una alta disponibilidad. Después de una solicitud PUT realizada con éxito, los datos modificados deben replicarse en todos los servidores. Este proceso puede llevar algún tiempo. En este caso, un usuario puede obtener los datos antiguos o los datos actualizados, pero no los datos dañados. Esto también se aplica a los objetos y buckets eliminados. No se realiza ningún bloqueo de objetos cuando se envían nuevos objetos a los buckets de S3. Si se realizan varias solicitudes PUT simultáneamente, prevalece la última solicitud PUT. Puede crear su propia aplicación con un mecanismo de bloqueo que funcione con los objetos almacenados en Amazon S3.
Características de Amazon S3
El concepto de almacenamiento basado en objetos permite a Amazon ofrecer funciones útiles y una gran flexibilidad para el almacenamiento y la gestión de datos en Amazon S3. Repasemos estas funciones.
Control de versiones
El control de versiones de objetos te permite almacenar varias versiones de un objeto en un mismo depósito. Esta función protege los objetos almacenados en Amazon S3 frente a modificaciones, sobrescrituras o eliminaciones involuntarias. Después de modificar o eliminar un objeto, puedes restaurar una de sus versiones anteriores. El control de versiones se implementa gracias al enfoque de almacenamiento de objetos. Puede utilizar el control de versiones con fines de archivo. El control de versiones está desactivado de forma predeterminada.
A cada objeto de S3 se le asigna un identificador de versión, incluso si el control de versiones no está activado (en este caso, el valor del identificador de versión se establece en nulo). Si el control de versiones está activado, se asigna un nuevo valor de identificador de versión a una nueva versión del objeto después de escribir los cambios. El control de versiones se puede activar a nivel de depósito. El valor del identificador de versión de la primera versión del objeto permanece igual. Cuando se elimina un objeto de un depósito de S3 (con el control de versiones activado), se aplica el marcador de eliminación a la última versión del objeto.
Clases de almacenamiento
Las clases de almacenamiento de Amazon S3 definen la finalidad del almacenamiento seleccionado para conservar los datos. Una clase de almacenamiento se puede configurar a nivel de objeto. Sin embargo, se puede establecer la clase de almacenamiento predeterminada para los objetos que se vayan a crear a nivel de depósito.
S3 Standard es la clase de almacenamiento predeterminada. Esta clase corresponde al almacenamiento de datos de uso frecuente y resulta adecuada para datos que se utilizan con asiduidad. Utilice la clase de almacenamiento «Standard» para alojar sitios web, distribuir contenidos, desarrollar aplicaciones en la nube, etc. Los altos costes de almacenamiento, los bajos costes de restauración y el acceso rápido a los datos son las funciones de esta clase de almacenamiento.
S3 Standard-IA (acceso poco frecuente) puede utilizarse para almacenar datos a los que se accede con menos frecuencia que en S3 Standard. S3 Standard-IA está optimizada para un periodo de almacenamiento más prolongado. Se aplica un cargo por recuperar datos almacenados en la clase de almacenamiento S3 Standard-IA. Además, tanto en S3 Standard como en S3 Standard-IA hay que pagar por las solicitudes de datos (PUT, COPY, POST, LIST, GET, SELECT).
S3 One Zone-IA está diseñada para datos a los que se accede con poca frecuencia. Los datos se almacenan únicamente en una zona de disponibilidad (en el caso de S3 Standard, se almacenan en tres zonas de disponibilidad) y, como resultado, se ofrece un nivel menor de redundancia y resiliencia. El nivel de disponibilidad declarado es del 99,5 %, inferior al de las otras dos clases de almacenamiento. S3 One Zone-IA tiene unos costes de almacenamiento más bajos, unos costes de restauración más elevados y hay que pagar por la recuperación de datos por cada GB. Puedes considerar el uso de esta clase de almacenamiento como una opción rentable para almacenar copias de backup o copias de datos creadas mediante la replicación entre regiones de Amazon S3.
S3 Glacier no ofrece acceso inmediato a los datos almacenados, a diferencia de las demás clases de almacenamiento. S3 Glacier se puede utilizar para almacenar datos con fines de archivo a largo plazo a un bajo coste. No se garantiza un funcionamiento ininterrumpido. Hay que esperar entre unos minutos y unas horas para recuperar los datos. Se pueden transferir datos antiguos desde una clase de almacenamiento superior (por ejemplo, desde S3 Standard) a S3 Glacier utilizando las políticas de ciclo de vida de S3 y reducir así los costes de almacenamiento.
S3 Glacier Deep Archive es similar a S3 Glacier, pero el tiempo necesario para recuperar los datos es de entre 12 y 48 horas. El precio es inferior al de S3 Glacier. La clase de almacenamiento S3 Glacier Deep Archive puede utilizarse para almacenar backups y datos de archivo de empresas que deben cumplir requisitos normativos en materia de archivo de datos (sector financiero, sanitario). Se trata de una buena alternativa a los cartuchos de cinta.
S3 Intelligent-Tiering es una clase de almacenamiento especial que utiliza otras clases de almacenamiento. S3 Intelligent-Tiering está diseñado para seleccionar automáticamente la clase de almacenamiento más adecuada para almacenar datos cuando no se sabe con qué frecuencia se necesitará acceder a ellos. Amazon S3 puede realizar la supervisión de los patrones de acceso a los datos cuando se utiliza S3 Intelligent-Tiering y, a continuación, almacenar los objetos en una de las dos clases de almacenamiento seleccionadas (una para datos a los que se accede con frecuencia y otra para datos a los que se accede con poca frecuencia). Este enfoque ofrece una relación coste-eficacia óptima sin comprometer el rendimiento.
Por ejemplo, si se accede a un objeto almacenado en una clase de almacenamiento para datos a los que se accede con poca frecuencia, dicho objeto se traslada automáticamente a una clase de almacenamiento para datos a los que se accede con frecuencia. Por el contrario, si no se ha accedido a un objeto durante mucho tiempo, este se traslada a la clase de almacenamiento para datos de uso poco frecuente. Los objetos pueden ubicarse en el mismo depósito y la clase de almacenamiento se modifica a nivel de objeto de S3.
Listas de control de acceso
Una lista de control de acceso (ACL) es una función que se utiliza para gestionar y controlar el acceso a objetos y depósitos. Las listas de control de acceso son políticas basadas en recursos que se asocian a cada bucket y objeto para definir los usuarios y grupos que tienen permisos para acceder al bucket y al objeto. De forma predeterminada, el propietario del recurso tiene acceso completo a un bucket u objeto después de crear el recurso. Los permisos de acceso al bucket definen quién puede acceder a los objetos del bucket. Los permisos de acceso a objetos definen qué usuarios pueden acceder a los objetos y el tipo de acceso. Por ejemplo, puedes establecer permisos de solo lectura para un usuario y permisos de lectura y escritura para otro.
La lista completa de usuarios que pueden tener permisos (un usuario con permisos se denomina «beneficiario»):
Owner – un usuario que crea un bucket o un objeto.
Authenticated Users – cualquier usuario que tenga una cuenta de AWS.
All Users – cualquier usuario, incluidos los usuarios anónimos (usuarios que no tienen una cuenta de AWS).
User by Email/Id – un usuario específico que tiene una cuenta de AWS. Para conceder acceso a este usuario, es necesario especificar su correo electrónico o su ID de AWS.
Tipos de permisos disponibles:
Full Control – este tipo de permiso proporciona permisos de lectura, escritura, lectura (ACP) y escritura ACP.
Read – permite enumerar el contenido del depósito cuando se aplica a nivel de depósito. Permite leer los datos y metadatos del objeto cuando se aplica a nivel de objeto.
Write – solo se puede aplicar a nivel de depósito y permite crear, eliminar y sobrescribir cualquier objeto del depósito.
Read Permissions (READ ACP) – un usuario puede leer los permisos del objeto o depósito especificado.
Write Permissions (WRITE ACP) – el usuario puede sobrescribir los permisos del objeto o bucket especificado. Habilitar este tipo de permiso para un usuario es igual a establecer permisos de «Control total», ya que el usuario puede configurar cualquier permiso para su cuenta. Este permiso está disponible de forma predeterminada para el propietario del bucket.
Políticas de bucket
Las políticas de bucket son políticas de gestión de identidades y accesos de AWS basadas en recursos que se utilizan para crear reglas condicionales que conceden permisos de acceso a cuentas y usuarios de AWS al acceder a buckets y a los objetos que contienen. Puede utilizar las políticas de bucket para definir reglas de seguridad para más de un objeto de un bucket.
La política de bucket se define como un archivo JSON. El texto de configuración de la política de bucket debe cumplir los requisitos de formato JSON para que sea válido. La política de bucket solo se puede aplicar a nivel de bucket y se hereda a todos los objetos del mismo. Puede conceder acceso a usuarios que se conecten desde direcciones IP específicas, a usuarios de cuentas de AWS específicas, etc.
A continuación se muestra un ejemplo de política que concede acceso completo a todos los usuarios de una cuenta y acceso de solo lectura a cada usuario de otra cuenta. {
"Statement": [
{
"Effect": "Allow",
"Principal": {
"SGWS": "95381782731015222837"
},
"Action": "s3:*",
"Resource": [
"urn:sgws:s3:::blog-bucket01",
"urn:sgws:s3:::blog-bucket01/*"
]
},
{
"Effect": "Allow",
"Principal": {
"SGWS": "30284200178239526177"
},
"Action": "s3:GetObject",
"Resource": "urn:sgws:s3:::blog-bucket01/shared/*"
},
{
"Effect": "Allow",
"Principal": {
"SGWS": "30284200178239526177"
},
"Action": "s3:ListBucket",
"Resource": "urn:sgws:s3:::blog-bucket01",
"Condition": {
"StringLike": {
"s3:prefix": "shared/*"
}
}
}
]
}
Los usuarios pueden acceder al almacenamiento de Amazon S3 mediante claves de acceso (ID de clave de acceso y clave secreta de acceso) sin necesidad de introducir nombre de usuario ni contraseña. Este método permite mejorar la seguridad y se utiliza para crear aplicaciones que utilizan API para acceder al almacenamiento en la nube de Amazon S3.
API para Amazon S3
Amazon proporciona interfaces de programación de aplicaciones (API) para acceder a las funciones de S3 y desarrollar aplicaciones propias que deban funcionar con el almacenamiento de Amazon S3. Amazon ofrece interfaces REST y SOAP. La interfaz REST utiliza solicitudes HTTP estándar para gestionar buckets y objetos. La API REST utiliza encabezados HTTP estándar. La interfaz SOAP es otra de las interfaces disponibles. El uso de SOAP sobre HTTP está obsoleto, pero aún se puede utilizar SOAP sobre HTTPS.
El modelo de pago
Amazon S3 ofrece el modelo de «paga solo por lo que usas». No se exige una cuota mínima: no es necesario pagar por una cantidad predeterminada de almacenamiento ni de tráfico de red. Existen categorías de uso por las que debes pagar:
Storage. Se paga por los objetos almacenados en Amazon S3. La cantidad que debes abonar depende del espacio de almacenamiento utilizado, del tiempo que los objetos permanezcan almacenados en Amazon S3 (durante el mes) y de la clase de almacenamiento utilizada por los objetos almacenados.
Requests and data retrieval. Debes pagar por las solicitudes realizadas para recuperar datos almacenados en el almacenamiento en la nube de Amazon S3.
Data transfer. Debe pagar por todo el ancho de banda utilizado (tráfico entrante y saliente), excepto los datos entrantes procedentes de Internet; los datos salientes que se transfieren a instancias de Amazon EC2 ubicadas en la misma región de AWS que el bucket de S3 de origen; y los datos salientes de un bucket de S3 a CloudFront.
Management and replication. Debe pagar por el uso de funciones de gestión del almacenamiento, como el análisis y el etiquetado de objetos. Amazon cobra por la replicación entre regiones y la replicación dentro de la misma región.
Utilice Calculadora de Amazon S3 para calcular sus pagos.


