Publié par

Il y a 8 mois -

Temps de lecture 8 minutes

Amazon S3 : Overview (Partie 1)

Amazon S3 est la solution de stockage sur le cloud proposée par Amazon Web Service (AWS). Brique de base de multiples architectures cloud, il est indispensable de la maîtriser pour l’utiliser à bon escient et avec efficience. Grâce à deux billets de blog à ce sujet, j’espère vous aider à démystifier quelques unes de ses fonctionnalités.

Amazon S3 : Overview

Amazon S3 (S3 pour Simple Storage Service) est un service de stockage qui vous permettra la sauvegarde de vos données, appelées objects, dans des dossiers, nommés buckets, sur votre plate-forme AWS.

Les buckets :

Vos données sont organisées et déposées dans des buckets qui ont certaines spécificités:

  • Un nom unique, même à travers plusieurs comptes Amazon.
  • Définis dans une région AWS (Irlande, Francfort, Oregon, …).
  • Ils ont une convention de nommage:
    • Tout en minuscule.
    • Les underscores ‘_’ sont à proscrire.
    • Une longueur entre 3 et 36 caractères.
    • Doit commencer par un chiffre ou une lettre.

Les objects :

Les données déposées dans S3 seront vues comme des objets répertoriés dans des buckets et sont identifiées par leur chemin dans S3.

Exemple:

  • Un fichier file1.txt dans le bucket first-bucket aura pour identifiant → http://s3-.amazonaws.com/first-bucket/file1.txt
  • Un fichier file2.txt dans un répertoire repo_1 dans le bucket second-bucket aura pour identifiant → http://s3-.amazonaws.com/second-bucket/repo_1/file2.txt

Il faut savoir que physiquement les éléments déposés dans un bucket sont tous au même niveau, il n’y a pas de notion d’arborescence de fichier. Cette dernière n’a été ajoutée qu’au niveau de la console AWS pour naviguer plus intuitivement dans S3.

Les objets dans S3 ne peuvent dépasser 5To de données. De plus, si votre objet dépasse les 5Gon il est impératif d’utiliser le « multi-part upload » qui vous permettra de scinder votre objet en plusieurs éléments lors du chargement (cette option est conseillée dès 100Mo de données).

Ils disposent de métadonnées et de tags, qui sont représentés sous forme d’une liste de clé/valeur pour y incorporer des informations système ou bien mises par l’utilisateur pour gérer les politiques de sécurité et gérer le cycle de vie de vos objets.

Un objet peut être versionné si l’option est activée.

Amazon S3 : Storage Tiers

L’accessibilité aux données est un enjeu majeur dans un contexte cloud. S3 met à disposition plusieurs types de stockage qui varient selon l’accessibilité aux données et les coûts associés:

Amazon S3 Standard :

Pour les usages les plus fréquents, ce type de stockage assure une disponibilité immédiate de vos données.

Amazon S3 Standard – Infrequent Access :

Pour des données dont les accès sont peu fréquents mais nécessitent une certaine rapidité d’accès au besoin. Moins coûteux que le stockage standard dû au coût de stockage faible. Il y a, cependant, un surcoût pour accéder à la donnée.

Un des cas d’usage pour ce type de stockage est par exemple la sauvegarde de vos backups.

Amazon S3 One Zone – Infrequent Access :

Ayant les mêmes caractéristiques que l’Infrequent Access Standard, il est par contre moins coûteux du fait que les données ne sont disponibles que dans une seule zone AWS (contrairement aux autres types de stockage qui stockent sur plusieurs zones AWS pour assurer la haute disponibilité de vos données).

Un cas d’usage possible est par exemple le stockage de vos backups qui peuvent être recalculés en cas de perte.

Amazon S3 Intelligent Tiering :

L’Intelligent Tiering est un type de stockage qui possède deux niveaux :

  • Frequent access : Equivalent à Amazon S3 Standard.
  • Infrequent Access : Equivalent à Amazon S3 Infrequent-Access en terme de performance, l’Intelligent Tiering met vos données directement dans ce niveau de stockage si elle n’ont pas été consultées pendant 30 jours consécutifs. Si vous souhaitez y accéder, l’Intelligent Tiering basculera les données demandées en frequent access pour avoir des performances de requêtage équivalentes au S3 standard. Il n’y a pas de frais lorsque vos données basculent d’un niveau vers un autre. Il y a cependant, des frais additionnels au monitoring et à l’automatisation de vos patterns.

Amazon Glacier :

Glacier est le système de stockage dédié à l’archivage et aux backups car le coût de stockage est le plus faible (0,0045$ par Go/Mois). Glacier manipule des archives au lieu d’objets, et ces archives sont répertoriées dans des vaults au lieu de buckets. Une archive peut atteindre maximum 40To.

Il existe trois options pour la récupération de vos données d’Amazon Glacier :

  • Accéléré : Votre donnée est disponible après 5 minutes d’attente avec un coût élevé (0.0315 $/Go et 10.5$/ 1000 requêtes).
  • Standard : Votre donnée est disponible après 3~5h d’attente avec un coût moyen (0.0105 $/Go et 0.053$/ 1000 requêtes).
  • Bulk : Votre donnée est disponible après 5~12h d’attente avec un coût faible (0.0026 $/Go et 0.0265$/ 1000 requêtes).

Amazon Glacier peut vous être utile dans l’archivage de vos données qui datent et qui n’ont plus lieu d’être requêtées, sauf cas extrême. Par exemple, des données d’une table Athena qui ont plus de 5 ans ou encore d’anciens backups.

Un petit récapitulatif s’impose:

Concernant la tarification complexe de ces classes de stockage, je ne peux que vous conseiller de vous référer à la documentation d’AWS.

Amazon S3 : Lifecycle Rules

Comme nous venons de le voir, Amazon S3 propose plusieurs niveaux de stockage. Cela est très utile en terme d’optimisation de coûts. Imaginons que nous disposons des données d’une table Athena qui datent de plus 5 ans et n’ont plus vocation à être requêtées. Il serait plus pertinent de stocker ces données en Infrequent Access ou peut-être de les archiver sur Amazon Glacier. Cependant, le faire unitairement pour tout objet stocké sur Amazon S3 peut être très chronophage.

Les Lifecycle Rules viennent répondre à cette problématique, en changeant automatiquement la classe de stockage de vos données selon des règles définies par le développeur. Elles s’appliquent au niveau des buckets tout en ayant la possibilité de limiter leur scope en ne les appliquant que sur des données ayant des tags ou des préfixes spécifiques.

On peut avoir plusieurs Lifecycle Rules par bucket. Au niveau d’une Lifecycle Rule, on peut réaliser une ou plusieurs transitions de classe de stockage. Une transition se fait après un nombre de jours définis par l’utilisateur, après la création de ce fichier dans S3.

En plus de faire transiter votre donnée entre plusieurs classes de stockage, les lifecycle rules vous permettent aussi de supprimer certaines données quand elles deviennent obsolètes. Cela pourrait s’avérer utile pour d’anciens fichiers de logs par exemple.

Ces transitions de classe de stockage et potentielles règles de suppression peuvent être appliquées soit à la dernière version d’un objet (si l’option est activée), soit aux versions antérieures.

Exemple: Il est possible de configurer une Lifecycle Rule qui, au bout de 30 jours, mettra vos données en Infrequent-Access puis, au bout de 60 jours, sur Glacier et, au bout de 3650 jours, (10 ans) les supprimera.

Amazon S3 : Versionning

Il est possible sur Amazon S3 de versionner vos données. Cette option est applicable au niveau des buckets, les données versionnées ayant alors une clé incrémentale (Version ID) actualisée à chaque dépôt d’une nouvelle version. Il est fortement recommandé d’activer cette option, du fait qu’elle pourra vous être utile en cas d’une suppression d’une donnée par erreur (on pourra alors récupérer l’avant dernière version).

Il est à noter que cette option peut être désactivée à tout moment. Une donnée non versionnée dans un bucket dont l’option de versionnage est activée aura pour Version ID null.

Amazon S3 : Cross region Replication

Une fois vos données déposées dans un bucket et versionnées, il est bon de savoir que sur Amazon S3, il est possible de répliquer vos buckets d’une région AWS vers une autre. Cette copie est asynchrone, c’est-à-dire qu’une fois la copie lancée, le bucket source ne reste pas en attente jusqu’à la fin de la copie. Cette réplication peut être réalisée vers un bucket qui n’est pas dans le même compte AWS que le bucket source et peut être appliquée à un bucket entier ou bien à un ensemble de données qui ont un tag ou un préfixe spécifique.

En plus de répliquer vos données, il est aussi possible de configurer le changement de la classe de stockage lors de la copie. Ce qui peut être utile dans le cas ou vous désirez avoir un bucket spécifique à l’archivage par exemple.

Conclusion

À travers cet article, nous avons vu quelques fonctionnalités qu’offre Amazon S3. Il est important de les connaître en vue d’utiliser ce service de manière efficiente en terme de coûts mais aussi de protection de vos données à l’aide du versionnage et de la réplication. On continuera via un deuxième article sur les ETags, les performances, le chiffrement et la sécurité dans Amazon S3.

Publié par

Publié par Elhadi Cherifi

Elhadi est Data Engineer chez Xebia. Data Lover avant tout, il travaille essentiellement sur des problématiques liées à l'ingestion, le traitement et le stockage des données dans un contexte big data. Ces outils préférés sont Scala et Spark.

Commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.