Comment copier tous les objets d'un compartiment Amazon S3 vers un autre ?
Je veux copier ou transférer tous mes objets d'un compartiment Amazon Simple Storage Service (Amazon S3) vers un autre. 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.
Remarque : l'utilisation des commandes aws s3 ls ou aws s3 sync sur des compartiments volumineux (avec 10 millions d'objets ou plus) peut s'avérer coûteuse, et entraîner une expiration de délai. Si vous rencontrez des problèmes d'expiration de délai en raison d'un compartiment volumineux, envisagez d'utiliser les métriques Amazon CloudWatch pour calculer la taille et le nombre d'objets dans un compartiment. Envisagez également d'utiliser S3 Batch Operations pour copier les objets.
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 :
- Si vous avez de nombreux objets dans votre compartiment S3 (plus de 10 millions d'objets), envisagez d'utiliser S3 Batch Operations. Vous pouvez utiliser S3 Batch Operations pour automatiser le processus de copie.
- Pour copier des objets entre des comptes AWS, configurez les autorisations inter-comptes appropriées sur le compartiment et le rôle AWS Identity and Access Management (IAM) correspondant.
- Si vous utilisez AWS CLI version 2 pour copier des objets entre des compartiments, votre rôle IAM doit également disposer des autorisations appropriées. Assurez-vous que votre rôle IAM peut accéder à s3:GetObjectTagging pour les objets sources et à s3:PutObjectTagging pour les objets de destination.
- Pour augmenter les performances du processus de synchronisation, ajustez l'AWS CLI pour utiliser une plus grande simultanéité. 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 votre charge de travail, consultez Schémas de conception des bonnes pratiques : optimisation des performances Amazon S3.
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 votre nouveau compartiment.
4. Sélectionnez votre région AWS.
Conseil : pour éviter les problèmes de performance causés par le trafic inter-régions, créez le compartiment cible dans la même région que le compartiment source.
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. Installer l'AWS CLI (français non garanti).
2. Configurez AWS CLI en exécutant la commande suivante :
aws configure
Remarque : en cas d'erreurs lors de l'exécution de commandes AWS CLI, vérifiez que vous utilisez la version la plus récente de l'AWS CLI.
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 les options de région et de sortie par défaut. Pour plus d'informations sur les paramètres de la région Amazon S3, consultez les points de terminaison du service AWS.
Remarque : les sorties 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 avez archivé des objets S3 dans la classe de stockage Amazon Simple Storage Service Glacier, alors 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
Remarque : mettez à jour la commande de synchronisation pour inclure le nom du compartiment source et celui du compartiment cible.
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. Lorsque vous utilisez la commande de synchronisation d'un compartiment existant en plusieurs versions, seule la version actuelle de l'objet est copiée (les versions précédentes ne sont pas copiées). Par défaut, ce comportement préserve les métadonnées de l'objet.
Si les listes de contrôle d'accès (ACL) sont activées dans le compartiment source, les listes ACL ne sont pas copiées vers le compartiment de destination. Cela est vrai, que les listes ACL soient activées ou non sur le compartiment de destination. Si les deux compartiments source et de destination ont des listes de contrôle d'accès activées, les ACL de l'objet de destination accordent l'autorisation FULL_CONTROL au compte qui a effectué la copie. 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, consultez Pourquoi ne puis-je pas copier un objet d'un compartiment Amazon S3 à l'autre ?
3. (Facultatif) Si vous rencontrez un problème d'expiration de délai, utilisez la commande cloudwatch get-metric-statistics pour calculer le nombre d'objets dans votre compartiment :
$ aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name NumberOfObjects --dimensions Name=BucketName,Value=DOC-EXAMPLE-BUCKET-SOURCE Name=StorageType,Value=AllStorageTypes --start-time 2021-05-11T00:00 --end-time 2021-05-11T00:10 --period 600 --statistic Average --output json
4. (Facultatif) Si vous rencontrez un problème d'expiration de délai, utilisez la commande cloudwatch get-metric-statistics pour récupérer la taille de votre compartiment :
$ aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=DOC-EXAMPLE-BUCKET-SOURCE Name=StorageType,Value=StandardStorage --start-time 2021-05-11T00:00 --end-time 2021-05-11T00:10 --period 3600 --statistics Average --unit Bytes --output json
Remarque : les appels de liste peuvent être très coûteux, ce qui entraîne la temporisation de la commande. Pour les compartiments volumineux, envisagez plutôt d'utiliser les métriques Amazon CloudWatch pour calculer la taille du compartiment et le nombre total d'objets. Toutefois, comme les métriques Amazon CloudWatch ne sont extraites qu'une fois par jour, le nombre d'objets signalés et la taille du compartiment peuvent différer des résultats de la commande de liste.
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 de liste pour inclure le nom du compartiment 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.
Informations connexes
Vidéos associées

Contenus pertinents
- demandé il y a 2 moislg...
- demandé il y a 6 moislg...
- demandé il y a 2 moislg...
- demandé il y a 3 moislg...
- demandé il y a un moislg...
- AWS OFFICIELA mis à jour il y a 2 mois
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans
- Comment afficher les objets dont la réplication d'un compartiment Amazon S3 vers un autre a échoué ?AWS OFFICIELA mis à jour il y a 2 mois