Comment optimiser les performances lorsque je charge de grandes quantités de données dans Amazon S3 ?

Lecture de 3 minute(s)
0

Je souhaite charger une grande quantité de données dans Amazon Simple Storage Service (Amazon S3) ou copier une grande quantité de données entre des compartiments S3. Comment puis-je optimiser les performances de ce transfert de données ?

Résolution

Envisagez les méthodes suivantes pour transférer de grandes quantités de données depuis ou vers des compartiments Amazon S3 :

Chargements parallèles à l'aide de l'interface de ligne de commande (AWS CLI)

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

Afin de potentiellement réduire le temps global nécessaire au transfert, divisez le transfert en plusieurs opérations qui s'excluent mutuellement. Vous pouvez exécuter plusieurs instances de aws s3 cp (copie), aws s3 mv (déplacement) ou aws s3 sync (synchronisation) en même temps.

Une façon de fractionner votre transfert est d'utiliser les paramètres --exclude et --include afin de séparer les opérations par nom de fichier. Par exemple, vous souhaitez copier une grande quantité de données d'un compartiment vers un autre compartiment. Dans cet exemple, tous les noms de fichiers commencent par un chiffre. Vous pouvez exécuter les commandes suivantes sur deux instances de l'interface de ligne de commande AWS.

Remarque : les paramètres d'exclusion et d'inclusion --exclude et --include sont traités côté client. De ce fait, les ressources de votre machine locale peuvent affecter les performances de l'opération.

Exécutez cette commande afin de copier les fichiers dont le nom commence par les numéros 0 à 4 :

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"

Exécutez cette commande afin de copier les fichiers dont le nom commence par les numéros 5 à 9 :

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

Important : si vous devez transférer un très grand nombre d'objets (des centaines de millions), envisagez de créer une application personnalisée à l'aide d'un SDK AWS afin d'effectuer la copie. Bien que l'AWS CLI puisse effectuer la copie, une application personnalisée pourrait être plus efficace à cette échelle.

AWS Snowball

Envisagez d'utiliser AWS Snowball pour les transferts entre vos centres de données sur site et Amazon S3, particulièrement lorsque la taille des données est supérieure à 10 To.

Prenez note des limites suivantes :

  • AWS Snowball ne prend pas en charge les transferts de données entre compartiments.
  • AWS Snowball ne prend pas en charge le chiffrement côté serveur avec les clés gérées par AWS Key Management System (AWS KMS). Pour plus d'informations, consultez Chiffrement côté serveur dans AWS Snowball.

S3DistCp avec Amazon EMR

Envisagez d'utiliser S3DistCp avec Amazon EMR afin de copier les données entre des compartiments Amazon S3. S3DistCp permet la copie en parallèle de grands volumes d'objets.

Important : étant donné que cette option requiert le lancement d'un cluster Amazon EMR, assurez-vous de consulter la tarification Amazon EMR.


Informations connexes

Recommandations en matière de taux de requêtes et de performances

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an