Principes fondamentaux de la protection des données : comment sauvegarder un compartiment Amazon S3
Amazon S3 est un service de stockage dans le cloud fiable proposé par Amazon Web Services (AWS). Les fichiers sont stockés sous forme d’objets dans des compartiments Amazon S3. Ce service de stockage est largement utilisé pour stocker des sauvegardes de données en raison de la grande fiabilité d’Amazon S3. Contrairement à Amazon Elastic Block Storage (EBS), où les données redondantes sont stockées dans une seule zone de disponibilité, dans Amazon S3, les données redondantes sont réparties sur plusieurs zones de disponibilité.
Si un centre de données d’une zone devient indisponible, vous pouvez accéder aux données dans une autre zone. Dans certains cas, vous pouvez avoir besoin de sauvergarder les données stockées dans des compartiments Amazon S3 afin d’éviter toute perte de données due à une erreur humaine ou à une défaillance logicielle. Les données peuvent être supprimées ou corrompues si un utilisateur ayant accès à un compartiment S3 supprime des données ou les corrompt en y apportant des modifications indésirables. Une défaillance logicielle peut entraîner des conséquences similaires.
Gestion des versions Amazon S3
La gestion des versions des objets est une fonctionnalité efficace d’Amazon S3 qui protège vos données dans un compartiment contre la corruption, les modifications indésirables et la suppression. Lorsque des modifications sont apportées à un fichier (stocké sous forme d’objet dans S3), une nouvelle version de l’objet est créée. Plusieurs versions d’un même objet sont stockées dans un compartiment. Vous pouvez accéder aux versions précédentes de l’objet et les restaurer. Si l’objet est supprimé, un « marqueur de suppression » lui est appliqué, mais vous pouvez annuler cette action et récupérer une version antérieure de l’objet datant d’avant la suppression. La gestion des versions d’Amazon S3 peut être utilisée sans logiciel de sauvegarde S3 supplémentaire.
Vous pouvez utiliser la politique de cycle de vie pour définir la durée de conservation des versions dans un compartiment S3, ce qui constitue une forme de sauvegarde vers Amazon S3. Les coûts supplémentaires liés au stockage de versions supplémentaires ne devraient pas être élevés si vous configurez correctement la politique de cycle de vie et que les nouvelles versions remplacent les plus anciennes. Les anciennes versions peuvent être supprimées ou déplacées vers un stockage plus économique (par exemple, le stockage à froid) afin d’optimiser les coûts.
Comment activer la gestion des versions AWS S3
Connectez-vous à la console de gestion AWS à l’aide d’un compte disposant des autorisations nécessaires. Cliquez sur Services puis sélectionnez S3 dans la catégorie Stockage .
Dans le volet de navigation, cliquez sur Buckets et sélectionnez le compartiment S3 pour lequel vous souhaitez activer la gestion des versions. Dans cet exemple, je sélectionne le compartiment nommé blog-bucket01 . Cliquez sur le nom du compartiment pour afficher ses détails.
Ouvrez l’onglet Properties du compartiment sélectionné.
Dans la section Gestion des versions du compartiment , cliquez sur Edit.
La gestion des versions du compartiment est désactivée par défaut.
Cliquez sur Enable pour activer la gestion des versions des buckets.
Cliquez sur Save Changes.
Une astuce s’affiche pour vous indiquer que vous devrez peut-être mettre à jour vos règles de cycle de vie. Il s’agit de l’étape suivante.
Le message suivant s’affiche en haut de la page si des modifications de configuration ont été appliquées : Modification de la gestion des versions du bucket réussie .
Règles de cycle de vie
Pour configurer les règles de cycle de vie pour la gestion des versions Amazon S3, accédez à l’onglet Management sur la page du bucket sélectionné. Dans la section Règles de cycle de vie , cliquez sur Create lifecycle rule.
La page Créer une règle de cycle de vie s’ouvre.
Lifecycle Rule configuration. Saisissez le nom de la règle de cycle de vie, par exemple, Cycle de vie du blog 01 .
Choisissez la portée de la règle. Vous pouvez utiliser des filtres pour appliquer les règles de cycle de vie à des objets spécifiques ou appliquer la règle à tous les objets du compartiment. Définissez des balises d’objet pour identifier les objets auxquels des actions de cycle de vie doivent être appliquées. Saisissez une clé et une valeur dans les champs appropriés, puis cliquez sur le bouton « Add tag » pour ajouter la balise ou sur le bouton « Remove » pour la enlever.
Lifecycle rule actions. Choisissez les actions que vous souhaitez que cette règle effectue :
- Transition versions actuelles des objets entre les classes de stockage
- Transition versions précédentes des objets entre les classes de stockage
- Expiration versions actuelles des objets
- Suppression définitive versions précédentes des objets
- Suppression des marqueurs de suppression expirés ou des téléchargements en plusieurs parties incomplets
Transition noncurrent versions of objects between storage classes.
Sélectionnez les transitions entre classes de stockage et le nombre de jours après lesquels les objets deviennent obsolètes.
Dans mon exemple, les objets sont déplacés de la classe de stockage S3 actuelle vers Standard-IA au bout de 35 jours.
Permanently delete previous versions of objects.
Saisissez le nombre de jours après lesquels les versions précédentes doivent être supprimées. La valeur doit être supérieure au nombre de jours après lesquels les objets deviennent obsolètes. Dans mon exemple, les objets sont définitivement supprimés au bout de 40 jours.
Cliquez sur Create Rule pour créer une règle de cycle de vie.
Réplication du compartiment
Au lieu d’utiliser la sauvegarde automatique vers Amazon S3, vous pouvez répliquer le compartiment d’une région à l’autre. Vous devez créer un deuxième compartiment, qui servira de compartiment de destination, dans une autre région, puis créer une règle de réplication. Après avoir créé la règle de réplication, toutes les modifications apportées au compartiment source sont automatiquement répercutées dans le compartiment de destination.
Repérez la section Replication rules dans l’onglet GESTION de votre compartiment source, puis cliquez sur Create replication rule.
La page Créer une règle de réplication s’ouvre.
Saisissez un nom de règle de réplication, par exemple « » « Réplication du compartiment S3 du blog » .
Définissez le statut de la règle lors de sa création (enabled ou disabled).
Compartiment source. Le compartiment source a déjà été sélectionné ( blog-bucket01 ).
Choisissez une portée pour la règle. Vous pouvez utiliser la règle de réplication pour tous les objets du compartiment ou configurer des filtres et appliquer la règle à des objets personnalisés.
Destination. Saisissez le nom du compartiment de destination ou cliquez sur Browse S3 et sélectionnez un compartiment dans la liste. Vous pouvez sélectionner un compartiment de ce compte ou d’un autre compte. Si la gestion des versions AWS S3 est activée pour le compartiment source, la gestion des versions des objets doit également être activée pour le compartiment de destination. Une région de destination s’affiche pour le compartiment de destination sélectionné. 
Configurez le rôle de gestion des identités et des accès (IAM), puis sélectionnez une classe de stockage et des options de réplication supplémentaires. Cliquez sur « Save » pour enregistrer la configuration et créer une règle de réplication pour le compartiment.
Sauvegarde AWS S3 dans l’interface CLI
L’interface CLI AWS est une interface de ligne de commande puissante permettant d’interagir avec différents services Amazon, notamment Amazon S3. Il existe une commande « sync » très utile qui vous permet de sauvegarder des compartiments Amazon S3 sur une machine Linux en copiant les fichiers du compartiment vers un répertoire local sous Linux s’exécutant sur une instance EC2.
L’une des fonctionnalités de la commande « sync » dans l’AWS CLI est que les fichiers présents dans un système de fichiers local (destination de la sauvegarde Amazon S3) ne sont pas supprimés si ces fichiers sont absents du compartiment S3 source, et inversement. Ceci est important pour sauvegarder AWS S3 car si certains fichiers ont été supprimés accidentellement dans le compartiment S3, les fichiers existants ne sont pas supprimés dans le répertoire local d’une machine Linux après la synchronisation.
Avantages :
- Prise en charge des grands compartiments S3 et évolutivité
- Prise en charge de plusieurs threads pendant la synchronisation
- Possibilité de synchroniser uniquement les fichiers nouveaux et mis à jour
- Vitesse de synchronisation élevée grâce à des algorithmes intelligents
Inconvénients :
- Linux s’exécutant sur une instance EC2 consomme l’espace de stockage des volumes EBS. Les coûts de stockage des volumes EBS sont plus élevés que ceux des compartiments S3.
Ce tutoriel utilise les commandes pour Ubuntu Server.
Vous devez d’abord installer AWS CLI.
Mettez à jour l’arborescence des référentiels :
sudo apt-get update
Installez AWS CLI :
sudo apt install awscli
ou
Installez 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
Vérifiez les identifiants de connexion AWS sous Linux s’exécutant sur votre instance EC2.
aws configure list
Ajoutez les identifiants de connexion pour accéder à AWS avec AWS CLI depuis l’instance Linux si ceux-ci n’ont pas encore été configurés :
aws configure
Saisissez les paramètres suivants :
ID de clé d’accès AWS
Clé d’accès secrète AWS
Nom de la région par défaut
Format de sortie par défaut
Créez un répertoire pour stocker votre sauvegarde vers Amazon S3. Dans mon exemple, je crée le répertoire ~/s3/ pour stocker les sauvegardes S3, ainsi qu’un sous-répertoire dont le nom est identique à celui du compartiment. Les fichiers stockés dans le compartiment S3 doivent être copiés dans ce répertoire local sur la machine Linux. ~ correspond au répertoire personnel d’un utilisateur, qui est /home/ubuntu dans mon cas.
mkdir -p ~/s3/your_bucket_name
Remplacez your_bucket_name par le nom de votre compartiment ( blog-bucket01 dans notre exemple). mkdir -p ~/s3/blog-bucket01
Synchronisez le contenu du compartiment avec votre répertoire local sur l’instance EC2 exécutant Linux:
aws s3 sync s3:// blog-bucket01 /home/ubuntu/s3/ blog-bucket01/
Si la configuration des identifiants de connexion, le nom du compartiment, et le chemin de destination sont corrects, les données devraient commencer à se télécharger depuis le compartiment S3. Le temps nécessaire pour terminer l’opération dépend de la taille des fichiers dans le compartiment et de la vitesse de votre connexion Internet.
Sauvegarde automatique Amazon S3
Vous pouvez configurer les tâches de sauvegarde automatique Amazon S3 avec AWS CLI sync. Créez un fichier de script sync.sh pour exécuter la sauvegarde AWS S3 (synchroniser les fichiers d’un compartiment S3 avec un répertoire local sur votre instance Linux) et exécutez ensuite ce script selon un horaire déterminé.
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'
Remplacez le {BUCKET_NAME} par le nom du compartiment S3 que vous souhaitez sauvegarder.
Le chemin complet vers aws (binaire AWS CLI) est défini pour que crontab exécute correctement l’ application dans l’environnement shell utilisé par crontab.
Rendez le script exécutable :
sudo chmod +x /home/ubuntu/s3/sync.sh
Exécutez le script pour vérifier si le script fonctionne :
/home/ubuntu/s3/sync.sh
Modifiez le crontab (un planificateur sous Linux) de l’utilisateur actuel pour planifier l’exécution du script de sauvegarde Amazon S3.
crontab -e
Vous devrez peut-être choisir un éditeur de texte pour modifier la configuration crontab.
Le format du crontab pour la planification des tâches est le suivant :
m h dom mon dow command
Où : m – minutes ; h – heures ; dom – jour du mois ; dow – jour de la semaine.
Ajoutons une ligne de configuration pour que la tâche exécute la synchronisation toutes les heures et sauvegarde les résultats de la sauvegarde AWS S3 dans le fichier de log. Ajoutez cette ligne en bas de la configuration crontab.
0 * * * * /home/ubuntu/s3/sync.sh > /home/ubuntu/s3/sync.log
La sauvegarde automatique Amazon S3 est configurée. Le fichier de log peut être utilisé pour vérifier l’exécution des tâches de synchronisation.
Conclusion
Il existe plusieurs méthodes pour réaliser une sauvegarde Amazon S3 et deux d’entre elles ont été abordées dans cet article. Vous pouvez activer la version des objets pour un compartiment afin de conserver les versions précédentes des objets, ce qui vous permet de récupérer les fichiers si des modifications indésirables ont été écrites dans les fichiers. La réplication Amazon S3 est un autre outil natif pour faire une copie des fichiers stockés dans un compartiment Amazon S3 sous forme d’objets. Dans ce cas, les objets sont répliqués d’un compartiment à un autre. Vous pouvez également créer une sauvegarde d’un compartiment Amazon S3 en utilisant l’outil de synchronisation dans AWS CLI, qui vous permet de synchroniser les fichiers d’un compartiment avec un répertoire local d’une machine Linux fonctionnant sur une instance EC2. La sauvegarde automatique sur Amazon S3 peut être planifiée par un script et crontab.
En général, le stockage dans le cloud Amazon S3 est très fiable et la sauvegarde vers Amazon S3 est une pratique courante. Si vous disposez d’une stratégie de protection des données de code et d’une stratégie de sauvegarde AWS, vous devriez disposer d’une copie de sauvegarde. Dans ce cas, il est recommandé de sauvegarder les données sur Amazon S3 et vers un autre emplacement de destination. Utilisez NAKIVO Backup & Replication pour protéger vos données sur les machines physiques et virtuelles. NAKIVO Backup & Replication est un logiciel de sauvegarde de virtualisation robuste qui peut être utilisé pour protéger les VMs, ainsi que les instances Amazon EC2 et les machines physiques.










