Passer au contenu

Comment améliorer les performances de transfert de données à l'aide de la commande de synchronisation de l'AWS CLI pour Amazon S3 ?

Lecture de 6 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.

Brève description

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 affecter la durée de la synchronisation et le coût des requêtes adressées à Amazon S3.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

Supprimer les marqueurs de suppression parvenus à expiration

Étant donné que la commande de synchronisation exécute des appels d'API de liste dans le backend, les marqueurs de suppression affectent les performances de la commande de synchronisation. Il est recommandé de minimiser le nombre de marqueurs de suppression. Vous pouvez utiliser une règle de configuration du cycle de vie S3 pour supprimer automatiquement les marqueurs de suppression expirés dans un compartiment activé pour la gestion des versions.

Exécuter plusieurs opérations de l’AWS CLI

Pour copier une grande quantité de données, exécutez des opérations de synchronisation distinctes en parallèle. L'exemple de commande suivant exécute des opérations de synchronisation en parallèle 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

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

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

Remarque : Même lorsque vous utilisez des filtres exclusion et inclusion, la commande de synchronisation examine toujours tous les fichiers du compartiment source. L'examen identifie les fichiers source à copier dans 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 source. Cependant, en raison des filtres exclusion et inclusion, Amazon S3 copie uniquement les fichiers que vous incluez dans les filtres dans le compartiment de destination.

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

Activer S3 Transfer Acceleration

Utilisez S3 Transfer Acceleration pour améliorer vos vitesses de transfert.

Pour consulter la tarification de S3 Transfer Acceleration, choisissez l'onglet Transfert de données sur la page Tarification d'Amazon S3. Pour déterminer si S3 Transfer Acceleration améliore vos vitesses de transfert, utilisez l'outil Comparaison des vitesses d’Amazon S3 Transfer Acceleration.

Remarque : Avec S3 Transfer Acceleration, vous ne pouvez pas utiliser l'action CopyObject dans les régions AWS.

Modifier les valeurs de configuration de l'interface de ligne de commande AWS

max_concurrent_requests

Lorsque vous utilisez max_concurrent_requests, le nombre de requêtes par défaut que vous pouvez envoyer simultanément à Amazon S3 est de 10. Pour améliorer les performances, augmentez la valeur.

Important :

  • Lorsque vous exécutez plus de threads, vous utilisez plus de ressources sur votre machine. Assurez-vous que votre machine dispose de ressources suffisantes pour prendre en charge le nombre maximal de requêtes simultanées souhaitées.
  • Un trop grand nombre de requêtes simultanées peut entraîner des délais 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 l’option --cli-read-timeout option ou --cli-connect-timeout sur 0.

multipart_threshold

Lorsqu'un fichier atteint le seuil de taille, Amazon S3 utilise un chargement fractionné au lieu d'une seule opération. La valeur par défaut de multipart_threshold est de 8 Mo. Pour augmenter la valeur par défaut, exécutez la commande suivante :

aws configure set default.s3.multipart_threshold 16MB

Remarque : Remplacez 16 Mo par la taille de votre seuil partitionné.

multipart_chunksize

La valeur par défaut de multipart_chunksize est de 8 Mo et la valeur minimale est de 5 Mo. Pour augmenter la taille du fragment, exécutez la commande suivante :

aws configure set default.s3.multipart_chunksize 16MB

Remarque : Remplacez 16 Mo par votre nouvelle taille de fragment.

Pour les objets volumineux, il est recommandé de définir le seuil multipart_threshold sur 100 Mo afin que seuls les fichiers très volumineux utilisent des chargements partitionnés. Il est recommandé de définir le paramètre multipart_chunksize sur 25 Mo pour trouver un équilibre entre des chargements efficaces et des tailles de parties gérables.

(Facultatif) Vérifier la configuration de votre instance Amazon EC2

Si vous exécutez la commande de synchronisation à partir d’une instance Amazon Elastic Compute Cloud (Amazon EC2), utilisez les bonnes pratiques suivantes pour améliorer les performances :

  • Utilisez un type d'instance EC2 plus important avec un meilleur débit réseau et de meilleures ressources de processeur pour accélérer les taux de transfert de données.
  • Placez l'instance dans la même région que votre compartiment pour réduire la latence du réseau.
  • Utilisez un point de terminaison de passerelle Amazon Virtual Private Cloud (Amazon VPC) pour acheminer le trafic au sein du réseau AWS afin d'améliorer les performances et la sécurité.
    Remarque : Vous ne pouvez utiliser cette configuration que si votre instance se trouve dans la même région que votre compartiment.
  • Utilisez des instances optimisées pour Amazon Elastic Block Store (Amazon EBS) et choisissez des types de volumes EBS qui fournissent des IOPS et un débit élevés, tels que les volumes gp3 ou io2. Cela permet de réduire les conflits d'I/O et la latence lorsque vous manipulez des données locales avant de les transférer vers Amazon S3.
  • Choisissez des instances qui prennent en charge la mise en réseau améliorée pour des performances de paquets par seconde (PPS) supérieures et une latence plus faible.
  • Si votre charge de travail bénéficie de paquets TCP plus volumineux, activez les trames jumbo (MTU 9001).

Informations connexes

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

Comment transférer de grandes quantités de données d'un compartiment Amazon S3 à un autre ?

Comment résoudre les problèmes de lenteur ou d'irrégularité des vitesses lorsque je télécharge ou charge des données vers Amazon S3 depuis un client sur site ?

AWS OFFICIELA mis à jour il y a 5 mois