Comment puis-je copier tous les objets d’un compartiment Amazon S3 vers un autre compartiment ?
Je souhaite copier ou déplacer tous mes objets d’un compartiment Amazon Simple Storage Service (Amazon S3) vers un autre compartiment.
Brève description
Pour copier des objets d'un compartiment S3 vers un autre compartiment, choisissez l'une des options suivantes :
- Exécutez la commande sync depuis l'interface de ligne de commande AWS (AWS CLI)
- Utilisez Opérations Batch S3 pour les compartiments contenant de nombreux objets
La commande sync fonctionne bien pour les compartiments peu volumineux. Cependant, l'exécution de la commande sync pour copier des compartiments volumineux contenant des millions d'objets est une opération coûteuse et l'opération de copie peut expirer. Si vous rencontrez des délais d’attente lorsque vous copiez un compartiment, utilisez les métriques Amazon CloudWatch pour calculer la taille et le nombre d'objets dans le compartiment. Si votre compartiment S3 contient des millions d'objets, il est recommandé d'utiliser Opérations Batch S3 pour copier vos objets.
Remarque : Pour copier des objets de votre compartiment vers un compartiment appartenant à un autre compte AWS, utilisez AWS Identity and Access Management (IAM) pour configurer des autorisations entre comptes. Assurez-vous que votre rôle IAM dispose des autorisations s3:GetObjectTagging pour les objets source et des autorisations s3:PutObjectTagging pour les objets de destination.
Pour améliorer les performances de synchronisation et copier vos objets plus rapidement, effectuez l'une ou plusieurs des opérations suivantes :
- Réglez l'interface de ligne de commande AWS pour utiliser une simultanéité plus élevée
- Divisez le processus en plusieurs commandes de synchronisation en fonction des préfixes de noms d'objets
- Organisez l'architecture de votre compartiment S3 conformément aux bonnes pratiques
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez la section Résoudre les erreurs liées à l’AWS CLI. Veillez également que vous utilisez la version la plus récente de l'interface de programmation d'AWS.
Copiez les objets entre les compartiments S3
Pour copier des objets d'un compartiment vers un autre, procédez comme suit :
-
Si vous avez archivé des objets S3 dans la classe de stockage Amazon Simple Storage Service Glacier, restaurez-les.
-
Exécutez la commande sync suivante, mais remplacez example_source_bucket et example_target_bucket par les noms de vos compartiments S3 :
aws s3 sync s3://example_source_bucket s3://example_target_bucketRemarque : La commande sync copie uniquement les objets qui ne figurent pas déjà dans le compartiment de destination. Pour copier explicitement chaque objet, utilisez la commande cp plutôt que la commande sync. Lorsque vous utilisez la commande sync sur un compartiment à versions gérées, seule la version actuelle de chaque objet est copiée. Par défaut, cette action préserve les métadonnées de l’objet.
-
(Facultatif) En cas de délai d’attente, utilisez la commande cloudwatch get-metric-statistics pour calculer la taille de votre compartiment et le nombre d’objets.
Pour calculer la taille de votre compartiment, exécutez la commande suivante :
aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=example_source_bucket Name=StorageType,Value=StandardStorage --start-time 2021-05-11T00:00 --end-time 2021-05-11T00:10 --period 3600 --statistics Average --unit Bytes --output jsonPour calculer le nombre d'objets dans votre compartiment, exécutez la commande suivante :
aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name NumberOfObjects --dimensions Name=BucketName,Value=example_source_bucket Name=StorageType,Value=AllStorageTypes --start-time 2021-05-11T00:00 --end-time 2021-05-11T00:10 --period 600 --statistic Average --output jsonSi la taille de votre compartiment est conséquente et que ce dernier contient des millions d'objets, n'utilisez pas la commande sync. Utilisez plutôt Opérations Batch S3 lorsque vous copiez votre compartiment.
Important : Les listes de contrôle d'accès (ACL) ne sont pas copiées du compartiment source vers le compartiment de destination lorsque vous exécutez la commande sync. Si les listes de contrôle d’accès sont activées dans le compartiment source et dans le compartiment de destination, les ACL d’objet de destination octroient l’autorisation FULL_CONTROL au compte qui a effectué la copie. Pour résoudre les problèmes liés à la commande sync, consultez la section Pourquoi est-ce que je ne parviens pas à copier un objet entre deux compartiments Amazon S3 ?
Vérifiez que les objets ont été copiés
Pour vérifier que les objets ont été copiés, procédez comme suit :
- Pour vérifier le contenu des compartiments source et cible, exécutez les commandes ls suivantes :
aws s3 ls --recursive s3://example_source_bucket --summarize > bucket-contents-source.txt
Remarque : La commande ls peut expirer pour les compartiments volumineux. Pour les compartiments volumineux, utilisez les métriques CloudWatch pour calculer la taille du compartiment et le nombre total d’objets plutôt que la commande ls. Cependant, étant donné que les métriques Amazon CloudWatch ne sont extraites qu'une fois par jour, les résultats CloudWatch peuvent différer des résultats de la commande ls.aws s3 ls --recursive s3://example_target_bucket --summarize > bucket-contents-target.txt - Utilisez les fichiers texte générés par les commandes ls précédentes pour comparer les objets entre les compartiments source et cible. La sortie ressemble à l’exemple suivant :
2017-11-20 21:17:39 15362 s3logo.png Total Objects: 1 Total Size: 15362
Remarque : Si vous utilisez des applications ou des charges de travail qui effectuent des appels d'API dans le compartiment source, mettez à jour ces appels d'API dans le compartiment cible. Si les écritures sont fréquentes, vous devrez peut-être exécuter des commandes sync pour corriger les divergences entre les compartiments source et cible.
Informations connexes
Copier un objet dans un compartiment de répertoires
Comment puis-je copier des objets Amazon S3 depuis un autre compte AWS ?
- Sujets
- Storage
- Langue
- Français
Vidéos associées


Contenus pertinents
demandé il y a 2 ans
demandé il y a 4 ans
demandé il y a 3 ans
demandé il y a 2 ans
demandé il y a 2 ans
AWS OFFICIELA mis à jour il y a un an
AWS OFFICIELA mis à jour il y a 2 ans