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

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

Je souhaite transférer une grande quantité de données (1 To ou plus) à partir d'un compartiment Amazon Simple Storage Service (Amazon S3) vers un autre compartiment. Comment procéder ? 

Brève description

En fonction de votre cas d'utilisation, vous pouvez transférer des données entre les compartiments en recourant à l'une des options suivantes :

  • Exécution de chargements parallèles à l'aide de l'interface de ligne de commande AWS (CLI AWS)
  • Utilisation d'un kit SDK AWS
  • Utilisation de la réplication entre régions ou la réplication de même région
  • Utilisation des opérations par lot Amazon S3
  • Utilisation de S3DistCp avec Amazon EMR

Solution

Exécution de chargements parallèles à l'aide de l'interface de ligne de commande AWS

Remarque : la bonne pratique consiste à utiliser la version la plus récente de l'interface de ligne de commande AWS. Pour plus d'informations, consultez Installation de l'interface de ligne de commande AWS.

Vous pouvez diviser le transfert en plusieurs opérations mutuellement exclusives afin d'améliorer le temps de transfert grâce au multi-threading. Par exemple, vous pouvez exécuter plusieurs instances parallèles d'aws s3 cp, aws s3 mv ou aws s3 sync à l'aide de l'interface de ligne de commande AWS. Vous pouvez créer d'autres threads de chargement tout en utilisant les paramètres d'exclusion et d'inclusion --exclude et --include pour chaque instance de l'interface de ligne de commande AWS. Ces paramètres filtrent les opérations par nom de fichier.

Remarque : les paramètres d'exclusion et d'inclusion --exclude et --include sont traités côté client. C'est la raison pour laquelle les ressources de votre machine locale peuvent affecter les performances de l'opération.

Par exemple, pour copier une grande quantité de données d'un compartiment vers un autre compartiment dans lequel tous les noms de fichiers commencent par un nombre, vous pouvez exécuter les commandes suivantes sur deux instances de l'interface de ligne de commande AWS. Tout d'abord, exécutez cette commande pour copier les fichiers dont les noms commencent par les chiffres 0 à 4 :

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

Exécutez ensuite cette commande pour copier les fichiers dont les noms commencent par les chiffres 5 à 9 :

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

En outre, vous pouvez personnaliser les configurations de l'interface de ligne de commande AWS suivantes pour accélérer le transfert de données :

  • multipart_chunksize : cette valeur définit la taille de chaque partie que l'interface de ligne de commande AWS charge dans un chargement partitionné pour un fichier individuel. Ce paramètre vous permet de diviser un fichier plus volumineux (par exemple, 300 Mo) en plusieurs parties plus petites, ce qui permet des vitesses de chargement plus rapides.
    Remarque : pour un chargement partitionné, un seul fichier doit être chargé en maximum 10 000 parties distinctes. Vous devez vous assurer que la taille des parties que vous définissez équilibre la taille du fichier total et le nombre de parties.
  • max_concurrent_requests : cette valeur définit le nombre de demandes pouvant être envoyées à Amazon S3 à la fois. La valeur par défaut est 10. Vous pouvez l'augmenter à une valeur supérieure, telle que 50.
    Remarque : l'exécution d'un plus grand nombre de threads consomme plus de ressources sur votre machine. Vous devez vous assurer que votre machine dispose de suffisamment de ressources pour prendre en charge le nombre maximal de demandes simultanées souhaitées.

Utilisation d'un kit SDK AWS

Envisagez de créer une application personnalisée à l'aide d'un kit SDK AWS pour transférer les données pour un très grand nombre d'objets. Bien que l'interface de ligne de commande AWS puisse effectuer l'opération de copie, une application personnalisée peut être plus efficace pour effectuer un transfert à l'échelle de centaines de millions d'objets.

Utilisation de la réplication entre régions ou la réplication de même région

Lorsque vous avez configuré la réplication entre régions (CRR) ou la réplication de même région (SRR) sur le compartiment source, Amazon S3 réplique, de manière automatique et asynchrone, les nouveaux objets depuis le compartiment source vers le compartiment de destination. Vous pouvez choisir de filtrer les objets répliqués à l'aide d'un préfixe ou d'une balise. Pour plus d'informations sur la configuration de la réplication et la spécification d'un filtre, consultez Présentation de la configuration de réplication.

Lorsque la réplication est configurée, seuls les nouveaux objets sont répliqués dans le compartiment de destination. Lesobjets existants ne sont pas répliqués dans le compartiment de destination. Pour répliquer des objets existants, vous pouvez exécuter la commande cp suivante après avoir configuré la réplication sur le compartiment source :

aws s3 cp s3://source-awsexamplebucket s3://source-awsexamplebucket --recursive --storage-class STANDARD

Cette commande copie les objets du compartiment source dans le compartiment source, ce qui déclenche la réplication vers le compartiment de destination.

Remarque : la bonne pratique consiste à tester la commande cp dans un environnement hors production. Cela vous permet de configurer les paramètres pour votre cas d'utilisation exact.

Utilisation des opérations par lot Amazon S3

Vous pouvez utiliser les opérations par lot Amazon S3 pour copier plusieurs objets en une seule demande. Lorsque vous créez une tâche d'opération par lot, vous spécifiez les objets sur lesquels effectuer l'opération à l'aide d'un rapport d'inventaire Amazon S3 ou d'un fichier CSV. Ensuite, les opérations par lot Amazon S3 appellent l'API pour qu'elle effectue l'opération.

Lorsque la tâche de l'opération par lot est terminée, vous recevez une notification et vous pouvez choisir de recevoir un rapport de fin de la tâche.

Utilisation de S3DistCp avec Amazon EMR

L'opération S3DistCp sur Amazon EMR peut effectuer la copie parallèle de grands volumes d'objets dans des compartiments Amazon S3. S3DistCp copie d'abord les fichiers du compartiment source vers les nœuds de travail d'un cluster Amazon EMR. Ensuite, l'opération écrit les fichiers des nœuds de travail dans le compartiment de destination. Pour plus d'informations sur l'utilisation de S3DistCp, consultez les sept conseils pour l'utilisation de S3DistCp sur Amazon EMR pour déplacer efficacement des données entre HDFS et Amazon S3.

Important : étant donné que cette option nécessite l'utilisation d'Amazon EMR, veillez à consulter la tarification Amazon EMR.


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

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?