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

Dernière mise à jour : 31/05/2022

Je veux transférer une grande quantité de données (1 To ou plus) d'un compartiment Amazon Simple Storage Service (Amazon S3) vers un autre. Comment dois-je 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)
  • Utiliser un kit SDK AWS
  • Utiliser la réplication entre régions ou la réplication dans la même région
  • Utiliser les opérations par lot Amazon S3
  • Utilisation de S3DistCp avec Amazon EMR
  • Utilisation d’AWS DataSync

Solution

Exécuter des chargements parallèles à l'aide d'AWS CLI

Remarque : assurez-vous d'utiliser la version la plus récente d'AWS CLI. Pour plus d'informations, consultez Installation d'AWS CLI.

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. Par conséquent, notez que les ressources de votre machine locale peuvent éventuellement affecter les performances de l'opération.

Par exemple, pour copier une grande quantité de données d'un compartiment vers un autre (où les noms de fichiers commencent par un chiffre), exécutez les commandes suivantes.

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*"

Remarque : en cas d'erreurs lors de l'exécution des commandes d'AWS CLI, vérifiez que vous utilisez la version la plus récente de l'AWS CLI.

Exécutez ensuite cette commande sur une deuxième instance de l'AWS CLI 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'AWS CLI 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 simultanément à Amazon S3. La valeur par défaut est 10. Vous pouvez l'augmenter à une valeur supérieure, comme les ressources de votre machine. Vous devez vous assurer que votre machine dispose de suffisamment de ressources pour prendre en charge le nombre maximal de requêtes simultanées souhaitées.

Utiliser 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. L'AWS CLI peut également être utilisée pour effectuer une opération de copie. Toutefois, une application personnalisée peut être plus efficace pour effectuer un transfert à l'échelle de centaines de millions d'objets.

Utiliser la réplication entre régions ou la réplication dans la même région

Lorsque vous avez configuré la réplication entre régions (CRR) ou la réplication dans la même région (SRR) sur le compartiment source, Amazon S3 réplique automatiquement 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 identification. Pour plus d'informations sur la configuration de la réplication et la spécification d'un filtre, consultez la 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. Les objets existants ne sont pas répliqués dans le compartiment de destination. Pour plus d'informations, consultez Réplication d'objets existants avec S3 Batch Replication.

Utiliser les 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. Vous pouvez également utiliser un fichier manifeste CSV pour spécifier un tâche par lot. 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 sur 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.

Utilisation d’AWS DataSync

Pour migrer 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 source. Assurez-vous de spécifier le rôle AWS Identity Access Management (IAM) qui sera utilisé pour accéder à votre compartiment S3 source.

6.    Sélectionnez votre 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 AWS Identity Access Management (IAM) qui sera utilisé pour accéder à votre compartiment de destination S3.

8.    Configurez les paramètres de votre tâche.

9.    Passez en revue les détails de configuration.

10.    Choisissez Créer une tâche.

11.    Débutez votre tâche.

Important : lorsque vous utilisez AWS DataSync, vous devrez engager des coûts supplémentaires. Pour prévisualiser les coûts DataSync, consultez la structure de tarification DataSync et les limites DataSync.


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


Avez-vous besoin d'aide pour une question technique ou de facturation ?