Fundamentos de la protección de datos: cómo hacer backup de un bucket de Amazon S3
Amazon S3 es un servicio de almacenamiento en la nube fiable proporcionado por Amazon Web Services (AWS). Los archivos se almacenan como objetos en los buckets de Amazon S3. Este servicio se utiliza ampliamente para almacenar backups de datos debido a la alta fiabilidad de Amazon S3. A diferencia de Amazon Elastic Block Storage (EBS), donde los datos redundantes se almacenan en una sola zona de disponibilidad, en Amazon S3 los datos redundantes se distribuyen entre varias zonas de disponibilidad.
Si un centro de datos de una zona deja de estar disponible, se puede acceder a los datos desde otra zona. En algunos casos, puede ser necesario hacer backup de los datos almacenados en los buckets de Amazon S3 para evitar la pérdida de datos provocada por un error humano o un fallo de software. Los datos pueden eliminarse o corromperse si un usuario con acceso a un bucket de S3 los elimina o los daña al realizar cambios no deseados. Un fallo de software puede provocar resultados similares.
Versionado de Amazon S3
El control de versiones de objetos es una función efectiva en Amazon S3 que protege sus datos en un bucket contra la corrupción, escritura de cambios no deseados y eliminación. Cuando se realizan cambios en un archivo (que se almacena como un objeto en S3), se crea una nueva versión del objeto. Se almacenan múltiples versiones del mismo objeto en un bucket. Puede acceder y restaurar versiones anteriores del objeto. Si el objeto se elimina, se aplica el “marcador de eliminación” al objeto, pero puede revertir esta acción y abrir una versión anterior del objeto antes de la eliminación. El control de versiones de Amazon S3 se puede usar sin software adicional de backup de S3.
Puede usar la política de ciclo de vida para definir cuánto tiempo se deben almacenar las versiones en un bucket de S3 para tener una forma de backup de Amazon S3. Los costos adicionales por almacenar versiones adicionales no deberían ser altos si configura correctamente la política de ciclo de vida, y las nuevas versiones reemplazan a las más antiguas. Las versiones antiguas se pueden eliminar o mover a un almacenamiento más rentable (por ejemplo, almacenamiento en frío) para optimizar costos.
Cómo habilitar el control de versiones de AWS S3
Inicie sesión en la consola de gestión de AWS utilizando la cuenta con los permisos necesarios. Haga clic en Services y luego seleccione S3 en la categoría Almacenamiento .
En el panel de navegación, haga clic en Buckets y seleccione el bucket de S3 necesario en el que desea habilitar el control de versiones. En este ejemplo, selecciono el bucket con el nombre blog-bucket01 . Haga clic en el nombre del bucket para abrir los detalles del bucket.
Abra la pestaña Properties para el bucket seleccionado.
En la sección Control de versiones del Bucket , haga clic en Edit.
El control de versiones del bucket está desactivado de forma predeterminada.
Haga clic en Enable para activar el control de versiones del bucket.
Haga clic en Save Changes.
Se muestra un consejo de que podría necesitar actualizar sus reglas de ciclo de vida. Este es el siguiente paso.
El mensaje se muestra en la parte superior de la página si se han aplicado cambios de configuración: Control de versiones del bucket editado con éxito .
Reglas de ciclo de vida
Para configurar las reglas de ciclo de vida para el control de versiones de Amazon S3, vaya a la pestaña Management en la página del bucket seleccionado. En la sección Reglas de ciclo de vida , haga clic en Create lifecycle rule.
Se abre la página Crear regla de ciclo de vida .
Lifecycle Rule configuration. Ingrese el nombre de la regla de ciclo de vida, por ejemplo, Ciclo de vida del blog 01 .
Elija el alcance de la regla. Puede aplicar filtros para aplicar reglas de ciclo de vida a objetos específicos o aplicar la regla a todos los objetos en el bucket. Defina etiquetas de objeto para señalar objetos para los cuales se deben aplicar acciones de ciclo de vida. Ingrese una clave y un valor en los campos apropiados y haga clic en el botón Add tag para agregar la etiqueta o en el botón Remove para eliminar la etiqueta.
Lifecycle rule actions. Elija las acciones que desea que esta regla realice:
- Transicionar versiones actuales de objetos entre clases de almacenamiento
- Transicionar versiones previas de objetos entre clases de almacenamiento
- Expirar versiones actuales de objetos
- Eliminar permanentemente versiones previas de objetos
- Eliminar marcadores de eliminación expirados o cargas multipart incompletas
Transition noncurrent versions of objects between storage classes.
Seleccione transiciones de clase de almacenamiento y el número de días después de los cuales los objetos se vuelven no actuales.
En mi ejemplo, los objetos se trasladan de la clase de almacenamiento S3 actual a Standard-IA después de 35 días.
Permanently delete previous versions of objects.
Ingrese el número de días después de los cuales deben eliminarse versiones previas. El valor debe ser mayor que el número de días después de los cuales los objetos se vuelven no actuales. En mi ejemplo, los objetos se eliminan permanentemente después de 40 días.
Haga clic Create Rule para crear una regla de ciclo de vida.
Replicando el Bucket
Como alternativa al respaldo automático de Amazon S3, puede replicar el bucket entre regiones. Necesita crear un segundo bucket que sea el bucket de destino en otra región y crear una regla de replicación. Después de crear la regla de replicación, todos los cambios realizados en el bucket de origen se reflejan automáticamente en el bucket de destino.
Localice la sección Replication rules en la pestaña de Gestión para su bucket de origen y haga clic en Create replication rule.
La página Crear regla de replicación se abre.
Ingrese un nombre para la regla de replicación, por ejemplo, Blog S3 bucket replication .
Defina el estado de la regla cuando se cree (enabled o disabled).
Bucket de origen. El bucket de origen ya ha sido seleccionado ( blog-bucket01 ).
Elija un ámbito de regla. Puede usar la regla de replicación para todos los objetos en el bucket o configurar filtros y aplicar la regla a objetos personalizados.
Destino. Ingrese el nombre del bucket de destino o haga clic en Browse S3 y seleccione un bucket de la lista. Puede seleccionar un bucket en esta cuenta o en otra cuenta. Si el control de versiones de AWS S3 está habilitado para el bucket de origen, el control de versiones de objetos también debe estar habilitado para el bucket de destino. Se muestra una región de destino para el bucket de destino seleccionado. 
Configura el rol de gestión de identidades y accesos (IAM) y, a continuación, selecciona una clase de almacenamiento y opciones de replicación adicionales. Haz clic en « Save » para guardar la configuración y crear una regla de replicación para el bucket.
Copia de seguridad de AWS S3 en la CLI
La CLI de AWS es una potente interfaz de línea de comandos que permite trabajar con diferentes servicios de Amazon, incluido Amazon S3. Existe un útil comando «sync» que permite hacer backup de los buckets de Amazon S3 en una máquina Linux copiando los archivos del bucket a un directorio local en Linux que se ejecute en una instancia de EC2.
Una función del comando «sync» de la CLI de AWS es que los archivos del sistema de archivos local (destino del backup de Amazon S3) no se eliminan si dichos archivos no se encuentran en el bucket de S3 de origen, y viceversa. Esto es importante para hacer backup de AWS S3, ya que si se eliminaran accidentalmente algunos archivos del depósito de S3, los archivos existentes no se eliminarían del directorio local de una máquina Linux después de la sincronización.
Ventajas:
- Compatibilidad con depósitos de S3 de gran tamaño y ampliabilidad
- Se admiten múltiples subprocesos durante la sincronización
- Posibilidad de sincronizar solo archivos nuevos y actualizados
- Alta velocidad de sincronización gracias a algoritmos inteligentes
Desventajas:
- Linux ejecutándose en una instancia de EC2 consume el espacio de almacenamiento de los volúmenes EBS. Los costes de almacenamiento de los volúmenes EBS son más elevados que los de los buckets de S3.
En este tutorial se utilizan comandos para Ubuntu Server.
En primer lugar, debes instalar la AWS CLI.
Actualiza el árbol de repositorios:
sudo apt-get update
Instala la AWS CLI:
sudo apt install awscli
o
Instala unzip:
sudo apt install unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscli-exe-linux-x86_64.zip
sudo ./aws/install
Comprueba las credenciales de AWS en el sistema Linux que se ejecuta en tu instancia de EC2.
aws configure list
Añade las credenciales para acceder a AWS con la AWS CLI desde la instancia de Linux si aún no se han configurado:
aws configure
Introduce los siguientes parámetros:
ID de clave de acceso de AWS
Clave secreta de acceso de AWS
Nombre de la región predeterminada
Formato de salida predeterminado
Crea un directorio para almacenar tu copia de seguridad de Amazon S3. En mi ejemplo, creo el ~/s3/ directorio para almacenar las copias de seguridad de S3 y un subdirectorio con un nombre idéntico al del bucket. Los archivos almacenados en el bucket de S3 deben copiarse a este directorio local en la máquina Linux. ~ es el directorio de inicio de un usuario, que en mi caso es /home/ubuntu .
mkdir -p ~/s3/your_bucket_name
Sustituye your_bucket_name por el nombre de tu bucket ( blog-bucket01 en nuestro ejemplo). mkdir -p ~/s3/blog-bucket01
Sincroniza el contenido del bucket con tu directorio local en la instancia de Amazon EC2 que ejecuta Linux:
aws s3 sync s3:// blog-bucket01 /home/ubuntu/s3/ blog-bucket01/
Si la configuración de las credenciales, el nombre del bucket y la ruta de destino son correctos, los datos deberían empezar a descargarse desde el bucket de S3. El tiempo necesario para completar la operación depende del tamaño de los archivos del bucket y de la velocidad de tu conexión a Internet.
Copia de seguridad automática de Amazon S3
Puedes configurar Jobs de copia de seguridad automática de Amazon S3 con la herramienta de sincronización de AWS CLI. Crea un archivo de script sync.sh para ejecutar el backup de AWS S3 (sincronizar archivos desde un bucket de S3 a un directorio local en tu instancia de Linux) y, a continuación, ejecuta este script según una programación establecida.
nano /home/ubuntu/s3/sync.sh
#!/bin/sh
# Display the current date and time
echo '-----------------------------'
date
echo '-----------------------------'
echo ''
# Display the script initialization message
echo 'Syncing remote S3 bucket...'
# Running the sync command
/usr/bin/aws s3 sync s3://{BUCKET_NAME} /home/ubuntu/s3/{BUCKET_NAME}/
# Echo "Script execution is completed"
echo 'Sync complete'
Sustituye el {BUCKET_NAME} por el nombre del bucket de S3 del que deseas hacer backup.
La ruta completa a aws (binario de AWS CLI) se define para que crontab ejecute correctamente la aplicación aws en el entorno de shell utilizado por crontab.
Haga que el script sea ejecutable:
sudo chmod +x /home/ubuntu/s3/sync.sh
Ejecute el script para comprobar si funciona:
/home/ubuntu/s3/sync.sh
Edite el crontab (un programador de tareas en Linux) del usuario actual para programar la ejecución del script de backup en Amazon S3.
crontab -e
Es posible que tenga que seleccionar un editor de texto para editar la configuración del crontab.
El formato del crontab para programar tareas es el siguiente:
m h dom mon dow command
Donde: m – minutos; h – horas; dom – día del mes; dow – día de la semana.
Añadamos una línea de configuración para que la tarea ejecute la sincronización cada hora y guarde los resultados del backup de AWS S3 en el archivo de registro. Añade esta línea al final de la configuración de crontab.
0 * * * * /home/ubuntu/s3/sync.sh > /home/ubuntu/s3/sync.log
El backup automático de Amazon S3 ya está configurado. El archivo de registro se puede utilizar para comprobar la ejecución de las tareas de sincronización.
Conclusión
Existen varios métodos para hacer backup en Amazon S3 y en esta entrada del blog se han tratado dos de ellos. Puedes habilitar el control de versiones de objetos para un bucket con el fin de conservar versiones anteriores de los objetos, lo que te permite recuperar archivos en caso de que se hayan realizado cambios no deseados en ellos. La replicación de Amazon S3 es otra herramienta nativa que permite crear una copia de los archivos almacenados en un bucket de Amazon S3 como objetos. En este caso, los objetos se replican de un bucket a otro. También puedes crear un backup de un bucket de Amazon S3 utilizando la herramienta de sincronización de la CLI de AWS, que te permite sincronizar los archivos de un bucket con un directorio local de una máquina Linux que se ejecute en una instancia de Amazon EC2. La copia de seguridad automática de Amazon S3 se puede programar mediante un script y crontab.
En general, el almacenamiento en la nube de Amazon S3 es muy fiable y hacer backup en Amazon S3 es una práctica habitual. Si dispones de una estrategia de protección de datos de código y una estrategia de copias de seguridad de AWS, deberías contar con una copia de backup. En este caso, se recomienda hacer backup de los datos en Amazon S3 y en otra ubicación de destino. Utiliza NAKIVO Backup & Replication para proteger tus datos en máquinas físicas y virtuales. NAKIVO Backup & Replication es un robusto software de backup para entornos virtualizados que se puede utilizar para proteger máquinas virtuales, así como instancias de Amazon EC2 y máquinas físicas.










