Agence web » Actualités du digital » Comment migrer un compartiment AWS S3 vers un autre compte ou service – CloudSavvy IT

Comment migrer un compartiment AWS S3 vers un autre compte ou service – CloudSavvy IT

Le service de stockage simple (S3) d’AWS est idéal pour stocker de grandes quantités d’objets, mais il s’agit également d’une API compatible avec de nombreux autres services concurrents. Si vous souhaitez quitter AWS, le transfert d’un compartiment S3 est facile à faire.

Comment cela marche-t-il?

Si les deux services vers et depuis lesquels vous transférez sont compatibles S3, vous pouvez simplement utiliser un utilitaire tel que rclone, configuré pour accéder à chaque service, pour transférer tous les éléments. Par exemple, vous pouvez effectuer un transfert de S3 vers le service Spaces compatible de Digital Ocean, ou effectuer un transfert d’un compartiment S3 d’un compte vers un autre compte.

Pour gérer le transfert, rclone lira à partir du compartiment source, trouvera tous les fichiers qui doivent être transférés et gérera leur clonage dans le compartiment de destination. rclone peut également gérer les mises à jour de fichiers, ce qui peut être utile si le compartiment source est en cours d’écriture pendant le transfert.

En ce qui concerne les temps de transfert, cela prendra probablement un certain temps en fonction de la taille du seau. Le nombre de fichiers est également un problème, car rclone ajoute des frais généraux pour chaque transfert. Si vous avez des millions de fichiers ou plusieurs téraoctets, vous devez vous préparer à des heures de transfert.

Heureusement, vous pouvez effectuer le transfert initial important pendant que le compartiment est toujours en cours d’écriture. Vous aurez probablement besoin d’un peu de temps d’arrêt pour vous assurer que les compartiments sont synchronisés avant de basculer enfin. Si cela pose un problème, il existe d’autres outils disponibles pour un transfert transparent, y compris des outils commerciaux tels que NetApp Cloud Sync qui peuvent synchroniser plusieurs compartiments ensemble.

Certains services cloud, comme Google Cloud Platform, disposent de leurs propres services capables de gérer le transfert. Si vous passez à une plate-forme qui prend en charge cela, vous voudrez probablement utiliser leur service à la place.

EN RELATION: Comment transférer un bucket S3 vers Google Cloud Platform Storage

Configuration du rclone

La méthode la plus simple est de mettre en place rclone sur votre propre serveur pour gérer l’opération de transfert. Vous devrez l’exécuter en arrière-plan ou via un tmux fenêtre afin que vous puissiez vous déconnecter des longs transferts.

EN RELATION: Comment utiliser tmux sur Linux pour le multitâche de terminal

rclone est disponible auprès de la plupart des gestionnaires de packages :

apt install rclone -y

rclone est principalement destiné à transférer des fichiers localement ou entre des serveurs compatibles SSH, il faudra donc un peu de configuration pour gérer les transferts entre les services S3. Ce fichier se trouve à :

~/.config/rclone/rclone.conf

Ajoutez un nouveau bloc avec la configuration suivante, qui le connecte à votre compte AWS (pas un compartiment spécifique) :

[s3]
type = s3
env_auth = false
acl = private
access_key_id = ACCESS_KEY
secret_access_key = SECRET_KEY
region = REGION
location_constraint = LOCATION_CONSTRAINT

Vous devrez remplir la configuration avec votre clé d’accès et votre secret, et entrer la région de votre bucket. Vous pouvez trouver une liste des régions dans la documentation AWS.

Vous devrez remplir un autre bloc pour l’autre service vers lequel vous effectuez le transfert. Si vous passez d’un compte AWS à un autre, vous aurez besoin d’une clé distincte avec accès à ce compte. Si vous passez à un service comme DO Spaces, vous devrez définir un autre bloc avec un nouveau point de terminaison configuré :

[spaces]
type = s3
env_auth = false
acl = private
access_key_id = ACCESS_KEY
secret_access_key = SECRET_KEY
endpoint = nyc3.digitaloceanspaces.com

Dans tous les cas, vous devrez lui donner un nouveau nom sur le titre du bloc, car ce sont deux télécommandes distinctes.

Effectuer le transfert

Une fois configuré, vous pourrez visualiser toutes les télécommandes possibles

rclone listremotes

s3:
spaces:

Confirmez le type de télécommande en ajoutant l'indicateur --long à la commande rclone listremotes.

Vous pouvez afficher le contenu d’un compartiment en utilisant le nom du point de terminaison suivi de deux-points et du nom du compartiment.

rclone tree s3:source-bucket

Ensuite, vous pouvez exécuter la synchronisation, avec quelques indicateurs supplémentaires pour des performances optimales :

rclone sync source:/source-bucket 
destination:/destination-bucket 
-P -v --log-file /var/log/rclone/rclone-1.log 
--create-empty-src-dirs --s3-chunk-size 20M 
--s3-upload-concurrency 64 --checksum

le -P flag vous permettra de visualiser la progression de manière interactive dans votre terminal et vous donnera une estimation du temps que cela va prendre.

rclone sync analysera simplement le compartiment source et mettra à jour le compartiment cible. Vous pouvez continuer à modifier le compartiment source pendant la fin du transfert. Une fois l’opération terminée, vous pouvez exécuter des transferts supplémentaires et continuer à synchroniser les compartiments ensemble.

★★★★★