Comment puis-je copier tous les objets d'un compartiment Amazon S3 vers un autre compartiment ?

Date de la dernière mise à jour : 23/12/2020

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

Brève description

Pour copier des objets d'un compartiment S3 vers un autre, suivez la procédure suivante :

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 nom du compartiment cible.

Avant de commencer, vérifiez les points suivants :

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 votre région AWS.
Remarque : il est recommandé de créer le compartiment cible 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.    De manière facultative, choisissez Copy settings from an existing bucket (Copier les paramètres depuis un compartiment existant) pour mettre en miroir la configuration du compartiment source.

Installez et configurez AWS CLI.

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

2.    Configurez AWS CLI en exécutant la commande suivante :

aws configure

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis AWS CLI, assurez-vous que vous utilisez la version d'AWS CLI la plus récente.

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

4.    Appuyez sur Enter (Entrée) pour ignorer les options de région et 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 d'AWS CLI sont au format JSON, texte ou tableau, mais les commandes ne prennent pas toutes en charge chaque type de sortie. Pour plus d'informations, consultez Contrôle de la sortie de commande d'AWS CLI.

Copier les objets entre les compartiments S3

1.    Si vous disposez d'objets S3 archivés dans la classe de stockage Amazon Simple Storage Service Glacier, restaurez-les.

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

aws s3 sync s3://DOC-EXAMPLE-BUCKET-SOURCE s3://DOC-EXAMPLE-BUCKET-TARGET

La commande de synchronisation utilise les API CopyObject pour copier les objets d'un compartiment S3 à un autre. 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 d'un compartiment existant en plusieurs versions copie uniquement la version actuelle de l'objet (les versions précédentes ne sont pas copiées). Par défaut, les métadonnées d'objets 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. En cas d'échec de l'opération, vous pouvez à nouveau exécuter la commande de synchronisation sans dupliquer les objets précédemment copiés.

Pour résoudre les problèmes liés à l'opération de synchronisation, voir Pourquoi ne puis-je pas copier un objet entre deux compartiments Amazon S3 ?

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://DOC-EXAMPLE-BUCKET-SOURCE --summarize > bucket-contents-source.txt
        
aws s3 ls --recursive s3://DOC-EXAMPLE-BUCKET-TARGET --summarize > bucket-contents-target.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://DOC-EXAMPLE-BUCKET --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 compartiment cible

Mettez à jour les applications ou les charges de travail existantes pour qu'elles utilisent le nom du compartiment cible. Il peut être nécessaire d'exécuter les commandes de synchronisation de manière à é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 ?