Quel est le meilleur moyen pour transférer de grandes quantités de données d'un compartiment Amazon S3 à un autre ?

Lecture de 6 minute(s)
0

Je souhaite transférer une grande quantité de données (1 To, voire plus) d'un compartiment Amazon Simple Storage Service (Amazon S3) vers un autre compartiment.

Brève description

Si votre cas d'utilisation le permet, vous pouvez effectuer un transfert de données entre compartiments via l'une des options suivantes :

  • Exécution des téléchargements parallèles en utilisant l'AWS CLI
  • Utilisation d’un kit SDK AWS
  • Utilisation de la réplication entre régions ou de la réplication au sein d'une même région
  • Utilisation des opérations par lot Amazon S3
  • Utilisation de S3DistCp avec Amazon EMR
  • Utilisation de AWS DataSync

Résolution

Exécution des téléchargements parallèles en utilisant l'AWS CLI

Remarque : si des erreurs se produisent lors de l'exécution des commandes de l'interface de la ligne de commande AWS (AWS CLI), assurez-vous que vous utilisez la version la plus récente d'AWS CLI.

Pour améliorer le temps de transfert, utilisez le multithreading. Répartissez le transfert en plusieurs opérations mutuellement exclusives. Par exemple, utilisez l'AWS CLI pour exécuter plusieurs instances parallèles de aws s3 cp, aws s3 mv ou aws s3 sync. Vous pouvez créer davantage de threads de téléchargement lorsque vous utilisez les paramètres --exclude et --include pour chaque instance de l'AWS CLI. Ces paramètres filtrent les opérations par nom de fichier.

Remarque : les paramètres --exclude et --include sont traités côté client. Autrement dit, les ressources de votre machine locale peuvent influer sur les performances de l'opération.

Par exemple, pour copier une grande quantité de données d'un compartiment à un autre, exécutez les commandes suivantes. Notez que les noms de fichiers commencent par des chiffres.

Premièrement, exécutez cette commande pour copier les fichiers dont les noms commencent par les chiffres de 0 à 4 :

aws s3 cp s3://source-awsexamplebucket/ s3://destination-awsexamplebucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"

Ensuite, exécutez cette commande sur une deuxième instance AWS CLI pour copier les fichiers dont les noms commencent par les chiffres de 5 à 9 :

aws s3 cp s3://source-awsexamplebucket/ s3://destination-awsexamplebucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

Si vous souhaitez accélérer le transfert de données, alors personnalisez les configurations AWS CLI suivantes :

  • multipart_chunksize : cette valeur définit la taille de chaque portion que l'AWS CLI prend en charge lors du téléchargement, en plusieurs parties, d’un fichier individuel. Ce paramètre permet de réduire un fichier volumineux (par exemple, 300 Mo) en petites portions pour accélérer le chargement.
    Remarque : un chargement en plusieurs parties exige qu'un seul fichier soit chargé en 10 000 portions distinctes, au maximum. Vérifiez que la taille des portions définie correspond à la taille du fichier et au nombre de portions.
  • max_concurrent_requests : cette valeur définit le nombre de requêtes que vous pouvez envoyer à Amazon S3 en une fois. La valeur par défaut est 10. Toutefois, vous pouvez définir une valeur supérieure à 10. Vérifiez que votre machine dispose de ressources suffisantes pour prendre en charge le nombre maximal de requêtes simultanées que vous souhaitez.

Utilisation d’un kit SDK AWS

Utilisez un SDK AWS pour créer une application personnalisée permettant d'effectuer des transferts de données pour un grand nombre d'objets. En fonction du cas d'utilisation, une application personnalisée peut s'avérer plus efficace que l'AWS CLI pour transférer des centaines de millions d'objets.

Utilisation de la réplication entre régions ou de la réplication au sein d'une même région

Sur le compartiment source, configurez la réplication entre régions (CRR) ou la réplication au sein d'une même région (SRR). Amazon S3 peut ainsi répliquer automatiquement les nouveaux objets du compartiment source vers le compartiment destination. Pour filtrer les objets répliqués par Amazon S3, utilisez un préfixe ou une balise. Pour plus d'informations sur la configuration de la réplication et la spécification d'un filtre, consultez la section Configuration de la réplication.

Une fois la réplication configurée, seuls des objets neuf sont répliqués vers le compartiment de destination. Les objets existants ne sont pas répliqués vers le compartiment de destination. Pour plus d'informations, reportez-vous à la section Réplication d'objets existants avec la réplication par lots S3.

Utilisation des opérations par lot Amazon S3

Vous pouvez utiliser les opérations par lots Amazon S3 pour copier plusieurs objets en une seule demande. Lorsque vous créez une tâche d'opération par lots, vous pouvez utiliser un inventaire Amazon S3 pour spécifier les objets ciblés par l'opération. Vous pouvez également utiliser un fichier manifeste CSV pour spécifier une tâche par lot. Les opérations par lot Amazon S3 appellent ensuite l'API pour effectuer l'opération.

Au terme de la tâche d'opération par lot, vous recevez une notification et un rapport facultatif de fin de la tâche.

Utilisation de S3DistCp avec Amazon EMR

L'opération S3DistCp sur Amazon EMR peut copier en parallèle un grand nombre d'objets dans les compartiments Amazon S3. Premièrement, S3DistCp copie les fichiers du compartiment source dans les composants master d'un cluster Amazon EMR. Ensuite, l'opération écrit les fichiers des composants master dans le compartiment de destination. Pour plus de conseils sur l'utilisation de S3DistCp, consultez la section Sept conseils d'utilisation de S3DistCp sur Amazon EMR pour déplacer efficacement des données entre HDFS et Amazon S3.

Important : puisque cette option nécessite l'utilisation d'Amazon EMR, veuillez vous renseigner sur la tarification Amazon EMR.

Utilisation de AWS DataSync

Pour déplacer de grandes quantités de données d'un compartiment Amazon S3 vers un autre compartiment, effectuez les opérations suivantes :

  1. Ouvrez la console AWS DataSync.
  2. Créez une tâche.
  3. Créez un nouvel emplacement pour Amazon S3.
  4. Sélectionnez votre compartiment S3 comme emplacement source.
  5. Mettez à jour les paramètres de configuration de l'emplacement de la source. Assurez-vous de spécifier le rôle AWS Identity Access Management (IAM) pour accéder à votre compartiment S3 source.
  6. Sélectionnez le compartiment S3 comme emplacement de destination.
  7. Mettez à jour les paramètres de configuration de l'emplacement de destination. Assurez-vous de spécifier le rôle IAM pour accéder à votre compartiment de destination S3.
  8. Configurez les paramètres de votre tâche.
  9. Examinez les détails de configuration.
  10. Choisissez Créer une tâche.
  11. Commencez la tâche.

**Important :**lorsque vous utilisez AWS DataSync, vous encourez des coûts supplémentaires. Pour avoir un aperçu des coûts DataSync, prenez connaissance de la structure tarifaire DataSync et des limites DataSync.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 9 mois