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

Lecture de 3 minute(s)
0

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

Résolution

Utilisez l'une des méthodes suivantes pour transférer d’importantes quantités de données vers ou depuis des compartiments Amazon S3.

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

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

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

Une manière de fractionner votre transfert consiste à utiliser les paramètres --exclude et --include pour séparer les opérations par nom de fichier. Par exemple, si vous devez copier une grande quantité de données d'un compartiment vers un autre et que tous les noms de fichiers commencent par un chiffre, vous pouvez exécuter les commandes suivantes sur deux instances de l'AWS CLI.

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

Exécutez cette commande pour copier les fichiers dont les noms commencent par les chiffres de 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 pour copier les fichiers dont les noms commencent par les chiffres de 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 kit SDK AWS pour effectuer la copie. Bien que l'AWS CLI puisse effectuer la copie, une application personnalisée peut être plus efficace à cette échelle.

AWS Snowball

Envisagez d'utiliser AWS Snowball pour les transferts entre vos centres de données locaux et Amazon S3, en particulier lorsque les données dépassent 10 To.

Notez les limites suivantes :

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

S3DistCp avec Amazon EMR

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

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

Informations connexes

Directives relatives au taux de requête et aux performances

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