Comment copier des objets entre des compartiments Amazon S3 ?

Date de la dernière mise à jour : 12/04/2019

Je dois transférer tous mes objets d’un compartiment Amazon Simple Storage Service (S3) vers un autre compartiment S3. Comment migrer des objets entre mes compartiments S3 ? 

Brève description

Pour copier des objets d'un compartiment S3 vers un autre, procédez comme suit :

1.    Créez un nouveau compartiment S3.

2.    Installez et configurez l'interface de ligne de commande AWS.

3.    Copiez les objets entre les compartiments S3.

4.    Vérifiez que les objets sont copiés.

5.    Mettez à jour les appels d'API existants vers le nouveau nom de compartiment.

Avant de commencer, pensez à ajuster l'interface de ligne de commande AWS pour utiliser une simultanéité plus élevée afin d'améliorer les performances du processus de synchronisation. Pour plus d'informations sur les options de configuration, consultez Configuration de l'interface de ligne de commande AWS S3. Pour plus d'informations sur le prix des transferts de données, consultez la page Tarification pour Amazon S3.

Si le compartiment S3 contient un grand nombre d’objets (plus de 10 millions), pensez à utiliser les rapports d’inventaire Amazon S3 et les métriques Amazon CloudWatch. Ces rapports peuvent vous aider à optimiser le coût et les performances de la vérification des objets copiés. Vous pouvez également fractionner les commandes de synchronisation pour différents préfixes afin d’optimiser les performances de votre compartiment S3. Pour plus d'informations sur l'optimisation des performances de la charge de travail, consultez Directives relatives au débit des demandes et aux performance.

Solution

Créer un nouveau compartiment S3

1.    Ouvrez la console Amazon S3.

2.    Choisissez Create Bucket (Créer un compartiment).

3.    Choisissez un nom conforme DNS pour le nouveau compartiment.

4.    Sélectionnez la région AWS.
Remarque : il est recommandé de créer le compartiment dans la même région que le compartiment source afin d'éviter les problèmes de performances associés au trafic entre les régions.

5.    Si nécessaire, choisissez Copy settings from an existing bucket (Copier les paramètres d’un compartiment existant) pour mettre en miroir la configuration du compartiment source.

Installer et configurer l'interface de ligne de commande AWS

1.    Installez l’interface de ligne de commande AWS.

2.    Configurez l’interface de ligne de commande AWS en exécutant la commande suivante :

aws configure

3.    Saisissez vos Clés d'accès (ID de clé d'accès et clé d'accès secrète).

4.    Appuyez sur Entrée pour ignorer la région par défaut et les options de sortie par défaut. Pour plus d'informations sur les paramètres de région, consultez Régions et points de terminaison AWS pour Amazon S3.
Remarque : les sorties de l’interface de ligne de commande AWS sont au format JSON, texte ou tableau, mais les commandes ne prennent pas toutes en charge chaque type de sortie. Si la sortie de la commande ne prend pas en charge le format choisi, son propre format est utilisé par défaut. Pour plus d'informations, consultez Contrôle de la sortie de commande de l'interface de ligne de commande AWS.

Copier les objets entre les compartiments S3

1.    Si vous disposez d’objets S3 archivés dans Amazon Simple Storage Service Glacier, restaurez les objets stockés dans Amazon S3 Glacier.

2.    Copiez les objets entre les compartiments source et cible en exécutant lacommande de synchronisation suivante :

aws s3 sync s3://SOURCE_BUCKET_NAME s3://NEW_BUCKET_NAME

Remarque : mettez à jour la commande pour inclure le nom du compartiment cible et celui du compartiment source.

La commande de synchronisation utilise les API CopyObject pour copier les objets entre les compartiments S3. La commande de synchronisation répertorie les compartiments source et cible pour identifier les objets qui se trouvent dans le compartiment source, mais pas dans le compartiment cible. Elle identifie également dans le compartiment source les objets dont les dates de dernière modification (LastModified) sont différentes de celles des objets dans le compartiment cible. La commande de synchronisation sur un compartiment ayant plusieurs versions copie la version en cours de l’objet, mais pas les versions précédentes. Par défaut, les métadonnées de l'objet sont préservées, mais les listes de contrôle d'accès (ACL) de votre compte AWS sont définies sur FULL_CONTROL de manière à supprimer toutes les autres listes ACL. Si l'opération échoue, vous pouvez exécuter la commande de synchronisation à nouveau sans dupliquer les objets précédemment copiés.

Vérifier que les objets sont copiés

1.    Vérifiez le contenu des compartiments source et cible en exécutant les commandes suivantes :

aws s3 ls --recursive s3://SOURCE_BUCKET_NAME --summarize > bucket-contents-source.txt
aws s3 ls --recursive s3://NEW_BUCKET_NAME --summarize > bucket-contents-new.txt

Remarque : mettez à jour la commande pour inclure le nom du compartiments source et celui du compartiment cible.

2.    Comparez les objets dans les compartiments source et cible en utilisant les sorties enregistrées dans des fichiers dans le répertoire de l’interface de ligne de commande AWS. Consultez l'exemple de sortie suivant :

$ aws s3 ls --recursive s3://BUCKETNAME --summarize
2017-11-20 21:17:39      15362 s3logo.png

  Total Objects: 1        Total Size: 15362

Mettre à jour les appels d'API existants vers le nom du nouveau compartiment

Mettez à jour les applications ou les charges de travail existantes pour qu'elles utilisent le nom du nouveau compartiment. Il peut être nécessaire d'exécuter des commande de synchronisation afin d'éviter les divergences entre les compartiments source et cible si vous êtes amené à effectuer des écritures fréquentes.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?