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

Date de la dernière mise à jour : 17/12/2019

Je souhaite transférer des données depuis mon instance Amazon Elastic Compute Cloud (Amazon EC2) vers mon compartiment Amazon Simple Storage Service (Amazon S3). Comment puis-je améliorer les vitesses de transfert ?

Brève description

Les vitesses de transfert pour copier, déplacer ou synchroniser des données depuis Amazon EC2 vers Amazon S3 dépendent de plusieurs facteurs. Les méthodes suivantes constituent les bonnes pratiques pour améliorer la vitesse de transfert lorsque vous copiez, déplacez ou synchronisez des données entre une instance EC2 et un compartiment S3 :

  • Utilisez la mise en réseau améliorée sur l'instance EC2.
  • Utilisez des charges de travail parallèles pour le transfert de données.
  • Personnalisez les configurations de chargement sur l'interface de ligne de commande AWS (AWS CLI).
  • Utilisez un point de terminaison Amazon Virtual Private Cloud (Amazon VPC) pour Amazon S3.
  • Utilisez S3 Transfer Acceleration entre des régions AWS distantes géographiquement.
  • Mettez à niveau votre type d'instance EC2.
  • Utilisez les transferts par morceaux.

Solution

Utiliser la mise en réseau améliorée sur l'instance EC2

La mise en réseau améliorée offre davantage de bande passante, des performances de paquet par seconde (PPS) plus élevées, ainsi que des latences réduites entre les instances. Vous pouvez activer la mise en réseau améliorée sans frais supplémentaires.

Si le taux PPS de votre instance EC2 semble avoir atteint son plafond, l'instance a probablement atteint les seuils supérieurs du pilote de l'interface réseau virtuelle. Si cela se produit, pensez à activer la mise en réseau améliorée.

Remarque : assurez-vous de vérifier les exigences de l'instance pour la mise en réseau améliorée.

Utiliser des charges de travail parallèles pour le transfert de données

Pour potentiellement améliorer le temps global nécessaire à l'exécution du transfert, envisagez de diviser le transfert en plusieurs opérations mutuellement exclusives. Par exemple, si vous utilisez l'interface de ligne de commande AWS, vous pouvez exécuter simultanément plusieurs instances d' aws s3 cp (copy), aws s3 mv (move) ou aws s3 sync (synchronize).

Remarque : comme bonne pratique, vérifiez que vous utilisez la dernière version de l'interface de ligne de commande AWS.

Personnalisation des configurations de chargement sur l'interface de ligne de commande AWS

Vous pouvez personnaliser les configurations de l'interface de ligne de commande AWS pour Amazon S3 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 : par défaut, l'interface de ligne de commande AWS prend en charge le multithreading. Vous pouvez modifier la valeur max_concurrent_requests pour augmenter le nombre de requêtes pouvant être envoyées à Amazon S3 simultanément. La valeur par défaut est 10. Une fois que vous avez augmenté cette valeur, vous pouvez obtenir une réponse stagnante. Toutefois, lorsque vous combinez une valeur max_concurrent_requests plus élevée avec des charges de travail parallèles, vous pouvez obtenir de meilleures vitesses de transfert globales.
    Remarque : l'exécution d'un plus grand nombre de threads consomme plus de ressources sur votre machine. Vous devez vous assurer que votre machine dispose de suffisamment de ressources pour prendre en charge le nombre maximal de demandes simultanées souhaitées.

Utiliser un point de terminaison d'un VPC pour Amazon S3

Si votre instance EC2 se trouve dans la même région que le compartiment S3, envisagez d'utiliser un point de terminaison d'un VPC pour Amazon S3. Les points de terminaison d'un VPC peuvent vous aider à améliorer les performances globales et à réduire la charge sur votre traduction d'adresses réseau (NAT).

Un autre avantage lié à l'utilisation d'un point de terminaison d'un VPC est que vous pouvez vous connecter de manière privée à un VPC sans passerelle Internet, périphérique NAT ou connexion VPN. Les instances d'un VPC n'ont pas besoin d'adresses IP publiques pour communiquer avec des ressources telles qu'un compartiment Amazon S3. Lorsque vous utilisez un point de terminaison d'un VPC, le trafic de données entre le VPC et Amazon S3 est acheminé sur le réseau AWS.

Utiliser S3 Transfer Acceleration entre des régions AWS distantes géographiquement

La vitesse de transfert de données peut être plus élevée si l'instance EC2 et le compartiment S3 sont géographiquement plus proches l'un de l'autre. Si l'instance et le compartiment se trouvent dans des régions AWS distantes géographiquement, pensez à activer Amazon S3 Transfer Acceleration. Transfer Acceleration fournit des transferts rapides et sécurisés sur de longues distances à l'aide des emplacements périphériques Amazon CloudFront distribués dans le monde entier.

Transfer Acceleration entraîne des frais supplémentaires. Veillez donc à prendre connaissance de la tarification. Pour déterminer si Transfer Acceleration va améliorer les vitesses de transfert pour votre cas d'utilisation, consultez l'outil Amazon S3 Transfer Acceleration Speed Comparison.

Mettre à niveau votre type d'instance EC2

Si l'utilisation de l'UC de votre instance EC2 est élevée, cela peut constituer un goulot d'étranglement pour vos vitesses de transfert globales. Vous pouvez mettre à niveau votre instance vers un autre type d'instance qui offre une mémoire et des performances réseau supérieures. Les grandes tailles d'instance pour un type d'instance offrent généralement de meilleures performances réseau que les tailles d'instance inférieures de même type.

Remarque : la bonne pratique consiste à choisir un type d'instance avec une connectivité réseau d'au moins 10 Gb/s pour une bande passante réseau durable et fiable entre l'instance EC2 et Amazon S3.

Utiliser les transferts par morceaux

Si vous transférez des fichiers volumineux, des chargements partitionnés et des GET à plage peuvent vous aider à améliorer les performances globales de transfert.


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

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?