Comment puis-je améliorer les performances de transfert de la commande de synchronisation pour Amazon S3 ?

Lecture de 5 minute(s)
0

J'utilise la commande de synchronisation de l'interface de la ligne de commande AWS (AWS CLI) pour transférer des données sur Amazon Simple Storage Service (Amazon S3). Malheureusement, le transfert prend beaucoup de temps.

Résolution

La commande de synchronisation compare les compartiments source et de destination afin d'identifier les fichiers source qui n'existent pas dans le compartiment de destination. La commande de synchronisation détermine aussi quels fichiers source ont été modifiés par rapport aux fichiers du compartiment de destination. Elle copie ensuite les fichiers source nouveaux ou à jour dans le compartiment de destination.

Le nombre d'objets du compartiment source et le compartiment de destination peut avoir une incidence sur le temps dont la commande de synchronisation a besoin pour terminer le processus. La taille du transfert peut influer sur la durée de la synchronisation ou sur le coût des requêtes adressées à Amazon S3.

Les marqueurs de suppression affectent également les performances de la liste. Il est donc préférable d'en réduire le nombre. Étant donné que la commande de synchronisation exécute des appels d'API de liste dans le backend, les marqueurs de suppression affectent également les performances de la commande de synchronisation.

Pour améliorer le temps de transfert lorsque vous exécutez la commande de synchronisation, procédez comme suit.

Exécuter plusieurs instances de l'AWS CLI

Pour copier une grande quantité de données, exécutez plusieurs instances de l'AWS CLI pour effectuer des opérations de synchronisation distinctes en parallèle. Par exemple, vous pouvez exécuter des opérations de synchronisation parallèles pour différents préfixes :

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder1 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder1  
aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder2 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder2

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

Vous pouvez aussi choisir d'exécuter des opérations de synchronisation parallèles pour des filtres d'exclusion et d'inclusion distincts. Par exemple, les opérations suivantes séparent les fichiers à synchroniser par des noms de clé commençant par les chiffres 0 à 4 et les chiffres 5 à 9 :

Remarque : même lorsque vous utilisez des filtres d'exclusion et d'inclusion, la commande de synchronisation examine toujours tous les fichiers du compartiment source. Cet examen permet d'identifier les fichiers sources à copier vers le compartiment de destination. Si vous avez plusieurs opérations de synchronisation qui ciblent différents préfixes de noms de clé, chaque opération de synchronisation examine tous les fichiers sources. Cependant, en raison des filtres exclusion et inclusion, seuls les fichiers que vous incluez dans les filtres sont copiés dans le compartiment de destination.

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"  
aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

Pour en savoir plus sur l'optimisation des performances de votre charge de travail, reportez-vous à la section Bonnes pratiques et modèles de conception : optimisation des performances d'Amazon S3.

Modifier la valeur de configuration de l'AWS CLI pour max_concurrent_requests

Pour améliorer potentiellement les performances, modifiez la valeur de max_concurrent_requests. Cette valeur définit le nombre de requêtes que vous pouvez envoyer à Amazon S3 à la fois. La valeur par défaut est de 10, mais vous pouvez l'augmenter. Notez toutefois les limites suivantes :

  • L'exécution d'un plus grand nombre de threads consomme davantage de ressources sur votre machine. Vous devez vous assurer que votre machine dispose de ressources suffisantes pour prendre en charge le nombre maximal de requêtes simultanées que vous souhaitez.
  • Un trop grand nombre de demandes simultanées risque de surcharger votre système. Cette situation peut entraîner des interruptions de connexion ou ralentir la réactivité du système. Pour éviter les problèmes de délai d'attente à partir de l'AWS CLI, définissez la valeur --cli-read-timeout ou la valeur --cli-connect-timeout sur 0.

(Facultatif) Vérifier la configuration de l'instance

Si vous utilisez une instance Amazon Elastic Compute Cloud (Amazon EC2) pour exécuter l'opération de synchronisation, utilisez les bonnes pratiques suivantes :

  • Examinez votre type d'instance. Les types d'instances plus volumineux peuvent fournir de meilleurs résultats, car ils disposent d'une bande passante élevée et de réseaux optimisés pour Amazon Elastic Block Store (Amazon EBS).
  • Si l'instance se trouve dans une région AWS différente de celle du compartiment, utilisez une instance dans la même région. Pour réduire la latence, réduisez la distance géographique entre l'instance et votre compartiment Amazon S3.
  • Si l'instance se trouve dans la même région que le compartiment source, configurez un point de terminaison Amazon Virtual Private Cloud (Amazon VPC) pour S3. Les points de terminaison d'un VPC peuvent contribuer à améliorer les performances globales.

Informations connexes

Comment puis-je améliorer les vitesses de transfert pour copier des données entre mon compartiment S3 et mon instance EC2 ?

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

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