Directives d’optimisation des performances et modèles de conception pour S3 Express One Zone - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Directives d’optimisation des performances et modèles de conception pour S3 Express One Zone

Lors du développement d’applications qui chargent et récupèrent les objets depuis Amazon S3 Express One Zone, suivez nos bonnes pratiques pour optimiser les performances. Pour utiliser la classe de stockage S3 Express One Zone, vous devez créer un compartiment de répertoires S3. La classe de stockage S3 Express One Zone n’est pas prise en charge pour une utilisation avec les compartiments S3 à usage général.

Pour accéder aux directives d’optimisation des performances relatives à toutes les autres classes de stockage Amazon S3 et aux compartiments à usage général S3, consultez Schémas de conception des bonnes pratiques : optimisation des performances Amazon S3.

Pour optimiser les performances pour votre application lorsque vous utilisez la classe de stockage et les compartiments de répertoires S3 Express One Zone, nous recommandons les directives et modèles de conception suivants.

Regroupement du stockage S3 Express One Zone et de vos ressources de calcul AWS

Chaque compartiment de répertoires est stocké dans une zone de disponibilité unique que vous sélectionnez lorsque vous créez le compartiment. Vous pouvez commencer par créer un nouveau compartiment de répertoires dans une zone de disponibilité locale pour vos charges de travail ou vos ressources de calcul. Vous pouvez alors commencer immédiatement des opérations de lecture et d’écriture à très faible latence. Les compartiments de répertoires sont les premiers compartiments S3 dans lesquels vous pouvez choisir la zone de disponibilité dans une Région AWS, afin de réduire la latence entre le calcul et le stockage.

Si vous accédez à des compartiments de répertoires dans différentes zones de disponibilité, la latence augmente. Pour optimiser les performances, nous vous recommandons d’accéder à un compartiment de répertoires depuis des instances Amazon Elastic Container Service, Amazon Elastic Kubernetes Service et Amazon Elastic Compute Cloud situées dans la même zone de disponibilité, quand cela est possible.

Compartiments de répertoires

Chaque compartiment de répertoires peut prendre en charge des centaines de milliers de transactions par seconde (TPS). Contrairement aux compartiments à usage général, les compartiments de répertoires organisent les clés de manière hiérarchique dans des répertoires plutôt qu’avec des préfixes. Un préfixe est une chaîne de caractères au début du nom de la clé d'objet. Vous pouvez voir les préfixes comme un moyen d'organiser vos données de la même manière que les répertoires. Toutefois, les préfixes ne sont pas des répertoires.

Les préfixes organisent les données dans un espace de noms plat au sein de compartiments à usage général, et le nombre de préfixes dans un compartiment à usage général est illimité. Chaque préfixe peut atteindre au moins 3 500 HEAD requêtesPUT/POST/DELETEou 5 500GET/par seconde. Vous pouvez également mettre en parallèle les demandes sur plusieurs préfixes pour mettre à l’échelle les performances. Toutefois, dans le cas d’opérations de lecture et d’écriture, cette mise à l’échelle se fait progressivement et n’est pas instantanée. Pendant la mise à l’échelle des compartiments à usage général pour atteindre votre nouveau taux de demandes supérieur, vous pouvez recevoir des erreurs de code d’état HTTP 503 (Service non disponible).

Avec un espace de noms hiérarchique, le délimiteur figurant dans la clé d’objet est important. Le seul délimiteur pris en charge est la barre oblique (/). Les répertoires sont déterminés par les limites des délimiteurs. Par exemple, la clé d’objet dir1/dir2/file1.txt entraîne la création automatique des répertoires dir1/ et dir2/, et l’ajout de l’objet file1.txt dans le répertoire /dir2, dans le chemin dir1/dir2/file1.txt.

Les répertoires créés lorsque les objets sont chargés dans des compartiments de répertoires ne sont soumis à aucune limite TPS par préfixe et sont automatiquement prédimensionnés pour réduire la probabilité d’erreurs HTTP 503 (Service non disponible). Cette mise à l’échelle automatique permet à vos applications de mettre en parallèle les demandes de lecture et d’écriture dans et entre les répertoires, selon les besoins.

Mise en parallèle des demandes de mise à l’échelle horizontale des compartiments de répertoires

Vous pouvez optimiser les performances en adressant plusieurs demandes simultanées aux compartiments de répertoires pour répartir vos demandes sur des connexions distinctes et augmenter au maximum la bande passante accessible. S3 Express One Zone n’a aucune limite quant au nombre de connexions établies avec votre compartiment de répertoires. Les répertoires individuels peuvent mettre à l’échelle horizontalement et automatiquement les performances quand un grand nombre d’écritures simultanées sont effectuées dans le même répertoire.

Lorsqu’une clé d’objet est initialement créée et que son nom de clé inclut un répertoire, le répertoire est automatiquement créé pour l’objet. Les chargements d’objets ultérieurs vers ce même répertoire ne nécessitent pas la création du répertoire, ce qui réduit la latence lors des chargements d’objets vers les répertoires existants.

Des structures de répertoires superficielles et profondes sont prises en charge pour stocker des objets dans un compartiment de répertoires, mais les compartiments de répertoires sont automatiquement mis à l’échelle horizontalement, avec une latence plus faible lors de chargements simultanés vers le même répertoire ou vers des répertoires similaires parallèles.

Utilisation de l’authentification basée sur les sessions

S3 Express One Zone et les compartiments de répertoires prennent en charge un nouveau mécanisme d’autorisation basé sur les sessions pour authentifier et autoriser les demandes adressées à un compartiment de répertoires. Avec l’authentification basée sur les sessions, les kits AWS SDK utilisent automatiquement l’opération d’API CreateSession pour créer un jeton de session temporaire utilisable pour l’autorisation à faible latence des demandes de données adressées à un compartiment de répertoires.

Les kits AWS SDK utilisent l’opération d’API CreateSession pour demander des informations d’identification temporaires, puis créent et actualisent automatiquement des jetons pour vous, en votre nom, toutes les 5 minutes. Pour tirer parti des avantages en matière de performances de la classe de stockage S3 Express One Zone, nous vous recommandons d’utiliser les kits AWS SDK pour lancer et gérer la demande d’API CreateSession. Pour plus d’informations sur ce modèle basé sur les sessions, consultez Autorisation CreateSession.

Bonnes pratiques supplémentaires en matière de somme de contrôle S3

S3 Express One Zone vous offre la possibilité de choisir l’algorithme de somme de contrôle utilisé pour valider vos données pendant le chargement ou le téléchargement. Vous pouvez sélectionner l’un des algorithmes de contrôle d’intégrité des données Secure Hash Algorithms (SHA) ou Cyclic Redundancy Check (CRC) suivants : CRC32, CRC32C, SHA-1 ou SHA-256. Les checksums basés sur MD5 ne sont pas pris en charge avec la classe de stockage S3 Express One Zone.

CRC32 est la somme de contrôle par défaut utilisée par les kits AWS SDK lors de la transmission de données vers ou depuis S3 Express One Zone. Nous recommandons d’utiliser CRC32 et CRC32C pour optimiser les performances avec la classe de stockage S3 Express One Zone.

Utilisation de la dernière version des kits AWS SDK et des bibliothèques CRT (Common Runtime)

Plusieurs des kits AWS SDK fournissent également les bibliothèques AWS CRT (Common Runtime) pour accélérer encore les performances des clients S3. Ces kits SDK incluent le kit AWS SDK for Java 2.x, le kit AWS SDK for C++ et le kit AWS SDK for Python (Boto3). Le client S3 basé sur CRT transfère des objets vers et depuis S3 Express One Zone avec des performances et une fiabilité améliorées en utilisant automatiquement l’opération d’API de chargement partitionné et les extractions de plages d’octets pour automatiser la mise à l’échelle horizontale des connexions.

Pour obtenir les meilleures performances avec la classe de stockage S3 Express One Zone, nous vous recommandons d’utiliser la dernière version des kits AWS SDK qui incluent les bibliothèques CRT ou d’utiliser l’AWS Command Line Interface (AWS CLI).

Dépannage des performances

Nouvelle tentative de demandes pour les applications sensibles à la latence

La classe S3 Express One Zone est spécialement conçue pour fournir des niveaux élevés constants de performances sans réglages supplémentaires. Toutefois, la définition de valeurs de délai d’attente et de nouvelles tentatives agressives contribue également à garantir une latence et des performances constantes. Les kits SDK AWS ont des valeurs configurables de délai d'expiration et de nouvelle tentatives que vous pouvez adapter aux tolérances de votre application spécifique

Association des types d’instances Amazon EC2 et des bibliothèques AWS CRT (Common Runtime)

Les applications qui effectuent un grand nombre d’opérations de lecture et d’écriture ont probablement besoin de plus de mémoire et de capacité de calcul que les autres. Lorsque vous lancez vos instances Amazon Elastic Compute Cloud (Amazon EC2) pour votre charge de travail exigeante en performances, choisissez les types d’instances qui disposent de la quantité de ces ressources dont votre application a besoin. Le stockage hautes performances S3 Express One Zone est idéalement associé à des types d’instances plus grands et plus récents, dotés d’une plus grande quantité de mémoire système et de CPU et GPU plus puissants, qui peuvent tirer parti d’un stockage plus performant. Nous vous recommandons également d’utiliser les dernières versions des kits AWS SDK compatibles CRT, qui accélèrent encore les demandes de lecture et d’écriture en parallèle.

Utilisation d’une authentification basée sur les sessions dans les kits AWS SDK à la place des API REST HTTP

Avec Amazon S3, vous pouvez également optimiser les performances lorsque vous utilisez des demandes d’API REST HTTP en suivant les mêmes bonnes pratiques que celles incluses dans les kits AWS SDK. Toutefois, avec le mécanisme d’autorisation et d’authentification basé sur les sessions utilisé par S3 Express One Zone, nous vous recommandons vivement d’utiliser les kits AWS SDK pour gérer CreateSession et son jeton de session géré. Les kits AWS SDK créent et actualisent automatiquement les jetons en votre nom à l’aide de l’opération d’API CreateSession. L’utilisation de CreateSession économise du temps de latence aller-retour par demande vers AWS Identity and Access Management (IAM) pour autoriser chaque demande.