Comment migrer mon compartiment Amazon S3 vers une autre région AWS ?

Date de la dernière mise à jour : 17/05/2019

Je souhaite transférer mon compartiment Amazon Simple Storage Service (Amazon S3) vers une autre région AWS. Comment procéder ?

Brève description

Vous ne pouvez pas migrer un compartiment S3 existant vers une autre région AWS. À la place, créez un nouveau compartiment dans la région de destination. Ensuite, copiez les données du compartiment source vers le nouveau compartiment.

Pour utiliser le même nom de compartiment dans la région de destination, vous devez pouvoir supprimer le compartiment source avant de créer le nouveau compartiment. En effet, les noms de compartiment doivent être uniques parmi tous les compartiments existants dans Amazon S3. Vous pouvez utiliser un compartiment temporaire pour stocker des données temporaires pendant que vous supprimez le compartiment source. 

Résolution

Suivez ces étapes pour recréer votre compartiment source dans une autre région en utilisant le même nom de compartiment :

Avertissement : lorsque le nom de compartiment est disponible, il est disponible pour tous les clients AWS. Vous ne pouvez pas réserver un nom de compartiment. Si le nom devient disponible et qu'un autre utilisateur le demande, vous ne pouvez pas reprendre le nom.

1.    Créez un compartiment temporaire dans la région de destination (compartiment de destination A).

2.    Copiez les données à partir du compartiment source vers le compartiment de destination A. Une méthode pour effectuer cette copie consiste à exécuter la commande sync en utilisant l'interface de ligne de commande (CLI AWS). Remarques :

  • Si vous souhaitez que le nouveau compartiment et ses objets appartiennent à un autre compte AWS, la copie doit être effectuée par un utilisateur ou un rôle AWS Identity and Access Management (IAM) avec des autorisations entre comptes. Si l'identité IAM appartient au compte source, l'identité doit être autorisée à accéder au compartiment de destination. Si l'identité IAM appartient au compte de destination, l'identité doit être autorisée à accéder au compartiment source.
  • Si vous effectuez la copie en utilisant une identité IAM à partir du compte source, veillez à définir les listes de contrôle d'accès (ACL) des objets sur « bucket-owner-full-control ». Il s'agit d'une liste ACL prête à l'emploi qui accorde au propriétaire du compartiment un accès total aux objets.
  • La durée de la copie varie en fonction de la quantité de données à copier. Pour accélérer l'opération, vous pouvez lancer plusieurs instances de sessions de transfert des données. Par exemple, vous pouvez exécuter des chargements parallèles en utilisant l'interface de ligne de commande (CLI) AWS.
 
3.    Une fois la copie terminée, supprimez le compartiment source.

4.    Exécutez la commande bucket-exists pour vérifier que le nom de compartiment est disponible. Si la commande renvoie « Waiter BucketExists failed: Max attempts exceeded » (Échec du waiter BucketExists : nombre max. de tentatives dépassé), vous pouvez utiliser le nom du compartiment.

Remarque : une fois le compartiment supprimé, il peut être nécessaire d'attendre un certain temps avant de pouvoir réutiliser le nom pour créer un nouveau compartiment dans la région de destination. Pour demander le nom du compartiment dès qu'il est disponible, vous pouvez exécuter un script pour vérifier en continu la disponibilité du nom. Ensuite, le script peut émettre l'appel d'API CreateBucket lorsque le nom est disponible.

5.    Créez un nouveau compartiment dans la région de destination (compartiment de destination B) avec le nom du compartiment source.

6.    Copiez les données du compartiment de destination A vers le compartiment de destination B.

7.    Une fois la copie terminée, supprimez le compartiment de destination A.