Curso
Un almacenamiento de datos eficaz es clave para el éxito operativo de cualquier empresa, sea del sector que sea. Cuantos más datos se recogen, más crucial es contar con soluciones de almacenamiento escalables, fiables y rentables.
Elegir el almacenamiento adecuado puede ser complicado por la gran cantidad de opciones disponibles, tanto en la nube como on‑premises, cada una con sus ventajas y limitaciones.
Este artículo no pretende cubrir todas las opciones posibles, sino centrarse en servicios escalables, fiables y rentables: Amazon Simple Storage Service (Amazon S3) y Amazon Elastic File System (EFS).
Empezaremos explicando por qué las empresas deberían adoptar servicios de almacenamiento y repasaremos sus fundamentos. Después, veremos cómo integrar estos servicios en un proceso operativo. La última sección profundiza en conceptos avanzados, con foco en el rendimiento y la optimización de costes.
Si buscas un recurso introductorio y completo sobre Amazon Web Services (AWS), echa un vistazo a este curso de Introduction to AWS.
¿Por qué AWS para almacenamiento de archivos?
Con todas las opciones que existen, es importante explicar por qué una empresa debería usar AWS para almacenar archivos; ese es el objetivo de esta sección.
Empezaremos con un análisis comparativo entre los servicios de almacenamiento de AWS y los tradicionales, junto con breves ejemplos de aplicaciones reales. Esto te ayudará a ver la relevancia de AWS S3 y EFS en distintos escenarios.
Comparativa de opciones de almacenamiento
Los servicios de almacenamiento tradicionales y los de AWS ofrecen conjuntos de características y ventajas diferentes. A continuación, un análisis comparativo en la tabla:
|
Características |
Almacenamiento tradicional |
AWS S3 & EFS |
|
Coste |
Inversión en hardware y costes continuos de mantenimiento, que pueden ser impredecibles con el tiempo. |
El modelo de pago por uso reduce el coste inicial y facilita una mejor gestión del gasto según el consumo. |
|
Cumplimiento normativo |
Se logra mediante controles y auditorías internas y puede requerir recursos adicionales para mantener los estándares. |
AWS cumple una amplia gama de estándares del sector, como HIPAA y GDPR, lo que simplifica el cumplimiento por parte del usuario. |
|
Accesibilidad de datos |
Principalmente accesible desde ubicaciones o redes específicas. El acceso remoto puede ser menos seguro y más complejo. |
Accesible globalmente por internet, con alta disponibilidad y redundancia de datos. |
|
Durabilidad de los datos |
Vulnerable a daños físicos, robos o desastres naturales. |
Ofrecen un 99.99999999999% (11 nueves) de durabilidad al replicar datos automáticamente entre múltiples zonas de disponibilidad. |
|
Gestión y mantenimiento |
Requiere un equipo dedicado para el mantenimiento del hardware, actualizaciones de software y resolución de incidencias. |
Lo gestiona AWS, lo que reduce la carga administrativa para los usuarios. |
|
Rendimiento |
Depende del hardware y la infraestructura de red concretos. Además, las actualizaciones pueden ser costosas. |
Ofrecen opciones de rendimiento personalizables. S3 dispone de clases de almacenamiento y funciones de aceleración; EFS admite cargas con ráfagas y diferentes modelos de rendimiento. |
|
Escalabilidad |
Limitada por la infraestructura física y requiere intervenciones manuales para escalar. |
Altamente escalable, permite ajustar el almacenamiento fácilmente sin aprovisionamiento previo. |
|
Seguridad |
Depende de medidas de seguridad locales, lo que exige un esfuerzo importante para garantizar la protección de los datos y el cumplimiento. |
Ofrecen controles de seguridad completos, incluido cifrado de datos (en reposo y en tránsito), gestión de accesos y certificaciones de cumplimiento. |
Tanto S3 como EFS tienen un amplio abanico de aplicaciones en distintas industrias. A continuación, encontrarás algunos casos de uso reales de ambos servicios, que ilustran su relevancia y utilidad en diferentes escenarios.
Casos de uso de Amazon S3
Veamos primero los casos de uso de Amazon Simple Storage Service (S3):
- Alojamiento de sitios web: S3 aloja sitios estáticos como blogs, webs de marketing y portafolios. Su alcance global y alta durabilidad garantizan que el contenido se entregue de forma rápida y fiable en todo el mundo.
- Copia de seguridad y recuperación ante desastres: S3 puede utilizarse para backups, archivado y recuperación ante desastres gracias a su alta durabilidad y disponibilidad.
- Lagos de datos para analítica: Las empresas pueden agregar grandes volúmenes de datos estructurados y no estructurados en S3 para análisis de big data.
- Distribución y entrega de contenidos: Empresas de medios usan S3 para almacenar y distribuir archivos de vídeo, audio e imagen de gran tamaño para su posterior análisis. Combinado con CloudFront y redes de distribución de contenidos, S3 entrega contenido a los usuarios con baja latencia de forma eficiente.
Casos de uso de EFS
Ahora, los casos de uso de Amazon Elastic File System (EFS):
- Almacenamiento de archivos compartido para instancias EC2: EFS actúa como almacenamiento de archivos altamente disponible y escalable para instancias EC2. Las aplicaciones que se ejecutan en varias instancias pueden compartir datos a través de EFS, ideal para cargas que requieren funciones de sistema de archivos como jerarquía, navegación por directorios y bloqueo de archivos.
- Almacenamiento para contenedores: EFS puede usarse con aplicaciones en contenedores, incluidas las orquestadas con Amazon ECS y Kubernetes en AWS. Ofrece una capa de almacenamiento persistente para contenedores, de modo que los datos persisten más allá de la vida de una instancia de contenedor.
- Big data y analítica: EFS es adecuado para aplicaciones de analítica de big data que requieren almacenamiento de archivos compartido. Puede soportar cargas analíticas complejas ofreciendo el rendimiento, IOPS y baja latencia necesarios para procesar grandes conjuntos de datos.
Fundamentos de almacenamiento en AWS
Con todo lo visto sobre S3 y EFS, es esencial saber cuándo usar cada servicio; ese es el objetivo de esta sección. Primero presentaremos el almacenamiento en bloques, en archivos y de objetos, y después compararemos S3 y EFS.
Introducción al almacenamiento en bloques, archivos y objetos
El almacenamiento en bloques, en archivos y de objetos son tres tipos fundamentales de sistemas de almacenamiento de datos. Cada uno sirve a fines distintos en computación en la nube y gestión de datos.
Almacenamiento en bloques
El almacenamiento en bloques segmenta los datos en bloques, cada uno con un identificador único, lo que permite una gestión flexible y eficiente. Amazon Elastic Block Store (EBS) y Instance Store Volumes son ejemplos de almacenamiento en bloques en el ecosistema de AWS.
Instance Store proporciona almacenamiento efímero conectado directamente al host, ideal para datos temporales. En cambio, EBS ofrece almacenamiento persistente a nivel de bloque, adecuado para bases de datos, aplicaciones y sistemas de archivos que requieren durabilidad y copias incrementales mediante snapshots.
Almacenamiento en archivos
El almacenamiento en archivos organiza los datos en una estructura jerárquica de archivos y carpetas, similar al sistema de archivos tradicional de un ordenador. Este enfoque intuitivo simplifica el acceso y la gestión de datos entre distintas aplicaciones y servicios.
Amazon Elastic File System (EFS) es un ejemplo de almacenamiento de archivos en la nube. Proporciona un sistema de archivos compartido que escala automáticamente y admite acceso simultáneo desde múltiples instancias.
EFS es especialmente útil para aplicaciones que requieren acceso compartido a archivos o para servir contenido que varios usuarios o sistemas necesiten consultar y editar.
Almacenamiento de objetos
El almacenamiento de objetos, como Amazon S3, está diseñado para guardar grandes volúmenes de datos no estructurados. A diferencia del almacenamiento en bloques y archivos, gestiona los datos como objetos dentro de buckets.
Cada objeto incluye los datos, metadatos y un identificador único, lo que permite una recuperación y gestión eficientes a cualquier escala. S3 es versátil y admite desde alojamiento de sitios estáticos hasta archivado de datos gracias a sus distintas clases de almacenamiento, como Standard, Standard-Infrequent Access (IA), Glacier Flexible Retrieval y Glacier Deep Archive.
S3 vs. EFS
Elegir entre Amazon S3 y Amazon Elastic File System (EFS) depende de los requisitos concretos de tu aplicación o carga de trabajo. Veamos las diferencias:
|
Característica |
Amazon S3 |
Amazon EFS |
|
Tipo de datos |
Datos no estructurados como imágenes, vídeos, logs y copias de seguridad. |
Archivos compartidos que deben ser accesibles simultáneamente por múltiples instancias EC2. |
|
Escala de almacenamiento |
Diseñado para cantidades masivas de datos, escalable a exabytes. |
Escala automáticamente con tus necesidades sin intervención manual. |
|
Patrón de acceso |
Ideal para datos con patrones de acceso variables, desde frecuente hasta archivado. |
Adecuado para datos que requieren acceso constante y simultáneo por múltiples aplicaciones. |
|
Integración |
Se integra con servicios de AWS para procesamiento de datos, analítica y entrega de contenidos. |
Compatible con aplicaciones que requieren una interfaz de sistema de archivos tradicional. |
|
Clases de almacenamiento |
Múltiples clases de almacenamiento. |
No aplicable. |
|
Costes |
El coste varía según la clase, con opciones de acceso esporádico para reducir gastos. |
Coste basado en la capacidad utilizada, sin coste inicial y con escalado automático. |
|
Escalabilidad y flexibilidad |
Altamente escalable tanto en capacidad como en rendimiento. |
Flexibilidad para escalar sin aprovisionar almacenamiento y gestionar picos de carga con facilidad. |
Primeros pasos con Amazon S3
Ahora que tienes más claro el concepto de almacenamiento de archivos, pasemos a la parte práctica con algo de implementación técnica.
Esta sección cubre la gestión de datos con Amazon S3. Concretamente, aprenderás a crear un bucket de almacenamiento, organizar datos en carpetas, subir archivos, ajustar permisos para acceso público cuando sea necesario, aplicar metadatos para su gestión y, por último, eliminar el bucket y su contenido para liberar recursos y evitar costes adicionales.
El principal requisito para completar esta sección es disponer de una cuenta de AWS, que puedes crear desde el sitio web de AWS.
Crear un bucket
El punto de partida es la consola de administración de Amazon Web Services, como se muestra a continuación:

Esta consola ayuda a gestionar todos los recursos de AWS, desde instancias de cómputo como EC2 hasta servicios de colas de mensajes como SQS, pasando por la gestión de seguridad.
Una vez en la consola, el primer paso es crear una instancia de S3. Puedes hacerlo con los siguientes pasos (sigue la numeración de la imagen):

Continuamos con unos pasos más:

Algunas notas sobre los pasos que hemos visto:
- Paso 4: Creamos el bucket en la región US East (Ohio) us-east-2.
- Paso 5: Los nombres de bucket son globalmente únicos, así que es importante elegir uno que no esté en uso. Así nadie más, sin importar su ubicación, podrá crear un bucket con el mismo nombre.
- Paso 6: La opción ACLs enabled nos permite definir permisos detallados sobre quién puede acceder a los archivos del bucket y qué puede hacer con ellos. Es útil para gestionar accesos a nivel de archivo individual. Con ACLs disabled no podemos fijar permisos por archivo.
- Paso 8: La opción Bucket owner preferred garantiza que somos propietarios de todos los archivos subidos al bucket, independientemente de quién los suba. Facilita la gestión de permisos y accesos.
Vamos a crear el bucket con tres pasos más:


Subir datos al bucket
Tras crear el bucket, podemos ver sus detalles. Un bucket es un contenedor que almacena recursos. Para empezar a subir recursos, primero creamos una carpeta. Empezamos con estos dos pasos:

Ahora creamos la carpeta:

¡La carpeta se ha creado!

Es momento de subir datos a la carpeta. Probemos con una imagen:

¡Imagen subida correctamente!

Configurar el control de acceso
Por defecto, todos los archivos subidos al bucket son privados y propiedad del creador; solo el propietario puede verlos, editarlos o descargarlos. Sin embargo, puede que queramos configurar el bucket para que cualquiera pueda acceder al archivo; esto es útil si todo el mundo debe ver las fotos en una web.
Podemos hacerlo permitiendo el acceso público al objeto. Esto debería permitir acceder a la URL del objeto de forma pública, pero, por desgracia, obtenemos un mensaje de Access Denied.

Para solucionarlo, debemos ir a la pestaña Permissions a nivel de bucket y editar la Bucket Policy:
Ahora editamos la política:
¡Con estos cambios, la imagen por fin se muestra!

Logotipo de AWS tras configurar el control de acceso
Introducción a Amazon EFS
En esta sección veremos cómo crear un sistema de archivos EFS, haciendo hincapié en la configuración de rendimiento y seguridad.
Crear un grupo de seguridad
Primero creamos un grupo de seguridad eligiendo la opción "Security Groups" en la pestaña Security del panel izquierdo.

Después:
- Selecciona Create security group.
- Usa un nombre descriptivo —en nuestro caso, MyDataCampEFSGroup.
- Escribe una breve descripción del grupo de seguridad.
- Deja la VPC con el valor por defecto.

No añadimos reglas de entrada (inbound):

El tipo de la Outbound rule 1 debe ser All traffic:

Con la configuración lista, haz clic en Create security group.

El nuevo grupo de seguridad aparece en la sección Security Groups.

Configura tu primer sistema de archivos EFS
A continuación, creamos un sistema de archivos EFS. Empezamos buscando y seleccionando EFS:

Ahora hacemos clic en Create file system.

Usamos un nombre descriptivo, dejamos la sección VPC como está y hacemos clic en Customize.

Para acceder a la configuración de red, hacemos clic en Next.

Rellenamos la sección de grupos de seguridad de cada zona de disponibilidad con MyDataCampEFSGroup.

Cuando terminemos, hacemos clic de nuevo en Next.

El último paso permite revisar toda la configuración. Si está todo correcto, hacemos clic en Create.

Si todo se ejecuta correctamente, veremos el sistema de archivos EFS recién creado en la pestaña File systems.

Crear una instancia EC2
El siguiente paso es crear una instancia EC2, que aporta a EFS el entorno de cómputo necesario y accede a los mismos datos de forma simultánea.
Vamos paso a paso. Empezamos seleccionando EC2 en la consola y hacemos clic en Launch instance. Elegiremos Amazon Linux 2, que está incluido en el nivel gratuito.

Ahora creamos un par de claves para conectarnos de forma segura a la instancia. El que creamos aquí tiene extensión .pem y nombre efs_ec2_key_pair. Descargamos este archivo y lo guardamos localmente para usarlo después.

La capacidad de almacenamiento por defecto es 8 GiB, suficiente para nuestro escenario, y aumentamos el número de instancias a 3. El paso final es lanzar las instancias con el botón Launch instance; el resultado muestra las nuevas instancias creadas.

Antes de continuar, comprobemos que podemos conectarnos a las instancias. Usaremos el siguiente comando SSH (Secure Shell):
ssh -i [path_to_the_key] ec2-user@[Public IPv4 address]
Desgranemos el comando paso a paso:
ssh: comando que inicia la conexión SSH.-i [path_to_the_key]: especifica la ruta a nuestra clave privada SSH, necesaria para autenticarnos en el servidor remoto.ec2-user: usuario por defecto para instancias Linux de EC2. Puedes usar otro si lo has configurado.@: separa el nombre de usuario de la dirección del servidor.[Public IPv4 address]: la dirección IP pública de nuestra instancia EC2. Puedes encontrarla en la consola de AWS.
Veamos el resultado de la conexión por SSH a cada instancia.
Resultado de la conexión SSH para la primera instancia.

Resultado de la conexión SSH para la segunda instancia.

Resultado de la conexión SSH para la tercera instancia.
Configurar EFS
Este último paso permite montar las instancias EC2 creadas. Podemos hacerlo desde la interfaz general de EFS.
Para simplificar, se muestra el proceso de montaje para una sola instancia, pero el mismo enfoque se aplica al resto.
Empezamos instalando el asistente de montaje de EFS en cada instancia con el siguiente comando:
sudo yum install -y amazon-efs-utils

Instalación de las utilidades de Amazon EFS — traza.
Luego creamos una carpeta efs en la raíz de cada instancia usando sudo, asegurándonos de usar la misma ruta en todas.
sudo mkdir /efs

Tras crear la carpeta, el siguiente paso es montarla. El ID del sistema de archivos es el ID del EFS que creamos; lo usamos en el comando sudo mount -t efs [file system ID]:/ /efs:
sudo mount -t efs fs-088faeea6372efa83:/ /efs

Este tiempo de espera ocurre porque el grupo de seguridad asociado al EFS que creamos no permite tráfico entrante desde nuestras instancias EC2. Podemos solucionarlo permitiendo que el grupo de seguridad acepte estas conexiones entrantes:

Creamos una nueva regla de entrada:

Una opción más segura es crear un grupo de seguridad separado para las instancias EC2 y permitir conexiones solo desde ese grupo. Esa configuración queda fuera del alcance de este artículo.
Tras completar este proceso en cada instancia EC2, el sistema EFS acepta conexiones desde cualquier lugar (incluidas nuestras instancias EC2). Esta vez no hay timeouts:

Para confirmar que el montaje se realizó correctamente, deberíamos poder:
- Crear una carpeta dentro de la carpeta compartida efs desde una instancia EC2
- Acceder a esa carpeta desde otra instancia EC2.
La ilustración muestra cómo la carpeta my_DataCamp_data se crea desde la primera instancia EC2, junto con un archivo README.txt. El mismo archivo README es visible en las demás instancias EC2.

Uso compartido de archivos con EFS.
Gracias a la configuración de EFS, un archivo creado por una instancia está accesible para las demás.
Para tener una visión más amplia del ecosistema de AWS, echa un vistazo al curso AWS Cloud Technology and Services.
Estrategias avanzadas de almacenamiento
Contar con buenas estrategias de almacenamiento es esencial para gestionar los datos de forma eficiente. Dos aspectos clave son la optimización del rendimiento y la optimización de costes.
Estas estrategias son especialmente relevantes para Amazon Simple Storage Service (S3) y Elastic File System (EFS).
La optimización del rendimiento en S3 y EFS implica elegir las clases de almacenamiento y modos de rendimiento adecuados para aumentar la velocidad y la eficiencia.
La optimización de costes pasa por utilizar distintos niveles de almacenamiento según la frecuencia de acceso a los datos y aprovechar las herramientas de monitorización de AWS para gestionar el gasto. Estas prácticas ayudan a gestionar los datos de forma eficiente y a reducir costes en la nube.
Conclusión
¡Enhorabuena por llegar hasta aquí! Esperamos que esta guía te ayude a empezar a usar el almacenamiento de AWS.
Una forma eficaz de dominar los servicios de AWS es aplicarlos a escenarios reales, no solo de manera aislada, sino combinando varios servicios. Si te interesa este tipo de práctica, echa un vistazo al curso Streaming Data with AWS Kinesis and Lambda.
Si buscas trabajo en el entorno de AWS, no dejes de revisar las AWS certifications in 2024. También te puede resultar muy útil repasar las AWS interview questions and answers.
Zoumana desarrolla herramientas de IA LLM para ayudar a las empresas a llevar a cabo la diligencia debida en materia de sostenibilidad y evaluaciones de riesgos. Anteriormente trabajó como científico de datos e ingeniero de aprendizaje automático en Axionable e IBM. Zoumana es la fundadora de la plataforma tecnológica educativa de aprendizaje entre iguales ETP4Africa. Ha escrito más de 20 tutoriales para DataCamp.

