[Update 05/2018]
Qu’est ce qu'Amazon S3 ?
Amazon S3 est le service de stockage principal d’Amazon Web Services. Il permet de stocker une quantité « virtuellement » illimitée de données avec une très haute disponibilité.
La grande particularité d’Amazon S3 réside dans le stockage en mode objet : contrairement au stockage en mode block ou file storage, un objet dans Amazon S3 est composé de data et de metadata, et répond à une API REST.
Les objets Amazon S3 – pouvant aller jusqu’à 5TB – sont stockés dans ce que l’on appelle des « Buckets ». Limités au nombre de 100 par comptes AWS, ces buckets possèdent un nom unique à travers le monde à la manière d’un enregistrement DNS et sont accessibles, sous réserve d’avoir les bons identifiants, via un endpoint exposé sur Internet. Ces buckets ne doivent donc pas être vus comme des dossiers, Amazon S3 n’étant pas structuré comme un filesystem.
Amazon S3 : les classes de stockage
Sous l’appellation Amazon S3 se cache en fait plusieurs classes de stockage :
- Amazon S3 “classique” :
Amazon Simple Storage Service (S3) est LE service AWS par excellence. Lancé en 2006, ce service de stockage objet peut héberger tous vos fichiers jusqu'à 5 téraoctets en assurant une disponibilité de 99,99% et une durabilité de 99,999999999% (lisez "onze-neuf"). Utilisé par des entreprises comme Netflix, Wetransfer et Dropbox, Amazon S3 permet également de stocker tout type de fichiers statiques accessibles depuis Internet : le site et le blog Osones sont par exemple intégralement stockés sur Amazon S3.
Depuis août 2016, Amazon S3 supporte l'IPv6. Pour se faire, vous pouvez faire pointer vos applications vers le nouveau endpoint « Dual-stack » d’Amazon S3, supportant à la fois IPv4 et IPv6. La plupart du temps, aucune configuration supplémentaire n’est nécessaire, l’IPv6 étant souvent sollicitée par défaut côté client. Les applications peuvent également continuer d’utiliser les API existantes sans changement applicatif, en pointant leurs requêtes vers des URL de type http://s3.dualstack.aws-region.amazonaws.com/bucket ou virtuellement hébergées de type http://bucket.s3.dualstack.aws-region.amazonaws.com.
- Amazon S3 IA (Infrequent Access Storage):
Habilement traduit en français par "Stockage en accès Standard – Peu fréquent", Amazon S3 IA se situe donc entre Amazon S3 RRS (deprecated) et Amazon Glacier. Le principe est simple : les fichiers auxquels vous avez rarement besoin d'accéder sont stockés pour un prix environ 60% inférieur à celui du stockage S3 régulier pour un même niveau de redondance. En contrepartie de ce tarif très avantageux, il faudra montrer patte blanche : les fichiers doivent être stockés au minimum 30 jours sur S3 IA (avec la facturation qui va avec), et le coût de rapatriement de ces données sera de 0,01 USD par gigabyte. Ainsi, Amazon se couvre contre les usages abusifs du service. Si vous en faites effectivement l'usage prévu (stockage de long terme, backups, PRA etc), votre coût de stockage s'en trouvera largement réduit.
- Amazon S3 One Zone Infrequent Access:
Avec l'abandon progressif d'Amazon S3 RRS (Reduced Redundancy Storage), AWS a introduit depuis le 04 Avril 2018 sa nouvelle classe Amazon S3 One Zone Infrequent Access (abrégé "One Zone-IA" ou "Z-IA"). Cette nouvelle classe a la particularité de stocker les objets sur une seule AZ. Amazon S3 Z-IA est donc conçu pour le stockage de fichiers rarement utilisés mais n'ayant pas besoin de la résilience multi-AZ d'Amazon S3 "classique" ou IA. Il s'agit donc d'une solution à coût très réduit (0.01 USD par GB et par mois), utile pour la sauvegarde de données qui peuvent être recrées facilement. Amazon S3 Z-IA offre, comme les autres classes, une durabilité "onze-neuf" (99.999999999%).
- Amazon Glacier:
Amazon Glacier enfin est la classe de stockage d'Amazon proposant de l'archivage à froid. Conçu dans l'optique d'extractions peu fréquentes et inhabituelles, les données sont là pour être conservées sur de très longues durées. Vous pouvez extraire gratuitement chaque mois jusqu'à 5 % de votre stockage mensuel moyen (au prorata par jour). Si vous décidez d'extraire plus que ce volume de données dans le mois, des frais d'extraction vous seront facturés à partir de 0,011 USD par gigaoctet. Point différenciant par rapport à Amazon S3 IA : les données peuvent prendre de 3 à 5h avant d'être rapatriées sur Amazon S3, mais ne sont facturées que 0,007 USD/Go/mois.
Cycle de vie d'Amazon S3
Les différentes classes S3 citées ci-dessus - Amazon S3 RRS (Reduced Redundancy Storage) pour les données non critiques, Amazon S3 IA (Infrequent Access Storage) pour les objets peu utilisés, et Amazon Glacier pour le stockage à froid - permettent la gestion du cycle de vie de vos objets : il est possible de pré-définir des règles qui vont s'appliquer à des buckets particuliers ou à des fichiers utilisant un certain préfixe pour automatiser le cycle de vie. Par exemple, tout fichier stocké sur Amazon S3 devra être déplacé vers Amazon IA après 30 jours.
Depuis mars 2016, la gestion des cycles de vie d'Amazon S3 s'étend pour inclure deux nouveaux cas particuliers :
- Les "Multipart Uploads" incomplets :
Pour les fichiers dont la taille dépasse les 100 MB, il est recommandé d’avoir recours au système d’upload multipart d’AWS. Ce découpage offre de nombreux avantages :
- Vous avez la possibilité de découper votre fichier en morceaux afin de paralléliser l'upload. En cas d’erreur de transfert lors d’un upload, vous n'aurez qu'à renvoyer la partie manquante.
- Vous pouvez étaler vos uploads dans le temps, ce dernier n’étant pas limité entre la réception de la première et de la dernière partie - sauf demande explicite de votre part.
- Vous pouvez uploader un projet avant de l’avoir terminé : vous n’avez pas besoin de connaître le taille de l’objet avant de lancer un upload en multipart.
Depuis mars 2016, il est possible d'appliquer les règles de cycle de vie à ces fichiers fractionnés. Dès lors, vous pouvez automatiser la suppression des fichiers dans le cas d'uploads incomplets.
- Les "Delete markers" expirés :
Amazon S3 propose un service de versioning qui permet de conserver différentes versions d'un même objet, et de retrouver un objet qui aurait été accidentellement supprimé. En effet lorsque le versioning est activé, un DELETE ne permet pas de supprimer définitivement un objet. Au lieu de cela, Amazon insère un "delete marker" dans le bucket, ce marker devenant la nouvelle version du fichier. Vous pourrez toujours accéder à votre objet, mais une requête depuis Internet renverra une erreur 404.
Dès lors si le versioning est activé dans vos buckets Amazon S3, toute demande de suppression d'objet après X jours se traduira par la création d'un Delete marker. Si toutes les versions précédentes de votre objet ont été supprimées, alors ces delete markers deviennent inutiles : ils expirent. Ces derniers ne sont pas facturés, mais peuvent parfois ralentir les requêtes LIST de vos buckets. C'est pourquoi AWS se propose désormais de supprimer automatiquement ces "Delete markers" expirés.
Sécurité et chiffrement sur Amazon S3
Par défaut les buckets S3 sont privés. Amazon S3 fournit plusieurs mécanismes de contrôle les accès aux données : les poliques AWS IAM (Identity and Access Management), les Access Control List (ACL), les "Bucket policy" et l'authentification par chaine d'interrogation ou "Query String Authentication". Les politiques IAM permettent d'autoriser des utilisateurs IAM à avoir un contrôle dense sur votre bucket ou objets Amazon S3. Les ACL sont utilisées pour accorder sélectivement certaines autorisations sur des objets individuels. Les Bucket policies Amazon S3 peuvent être utilisées pour ajouter ou refuser des autorisations sur certains ou tous les objets dans un seul bucket. Avec l'authentification par chaîne d'interrogation, il est possible de partager des objets Amazon S3 par le biais d'URL valides pendant une durée prédéfinie.
En matière de chiffrement, AWS peut chiffrer automatiquement les données au repos avec plusieurs solutions de gestion des clés. Il est donc possible de configurer les buckets S3 pour chiffrer automatiquement les objets avant de les stocker. Sinon, l'utilisation du chiffrement des données côté client avant de les charger sur S3 est toujours possible.
- Chiffrement côté client
La méthode de chiffrement côté client (client-side encryption) consiste à gérer soi-même ses clés sachant que, les données restant chiffrées dans les buckets S3, la perte de cette dernière signifie l'impossibilité d'utiliser à nouveau ces données.
- En transit:
Les transferts de données depuis ou vers Amazon S3 peuvent être chiffrées avec un certificat SSL/TLS.
- Au repos
Le chiffrement côté serveur sur Amazon S3 utilise des clés symétriques AES à 256 bits. Il existe trois façons de gérer les clés.
Amazon S3 Server Side Encription (SSE-S3) chiffre nativement les données en gérant les clés de chiffrement.
Pour plus de fonctionnalités il est possible d'utiliser AWS Key Management Service (SSE-KMS) qui fournit une gestion des autorisation d'utilisation des clés et un relevé des accès, permettant ainsi de bénéficier d'un niveau de contrôle supplémentaire et de consulter les tentatives d'accès aux données. Avec SSE-KMS les clés sont gérées dans AWS KMS.
Avec SSE-C(Customer Provided Keys), Amazon S3 peut aussi chiffrer les données au repos à l'aide de clés de chiffrement fournies par le client.
Combien coûte Amazon S3 ?
La facturation d'Amazon S3 se décompose selon trois critères :
1/ La volumetrie de fichiers stockés :
Voici le tableau des prix au 1er Janvier 2016 :
S3 standard | S3 IA | Amazon Glacier | |
---|---|---|---|
Premier 1 To/mois | $0.0300 par Go | $0.0125 par Go | $0.007 par Go |
49 To suivants par mois | $0.0295 par Go | $0.0125 par Go | $0.007 par Go |
450 To suivants par mois | $0.0290 par Go | $0.0125 par Go | $0.007 par Go |
500 To suivants par mois | $0.0285 par Go | $0.0125 par Go | $0.007 par Go |
4 000 To suivants par mois | $0.0280 par Go | $0.0125 par Go | $0.007 par Go |
Plus de 5 000 To/mois | $0.0275 par Go | $0.0125 par Go | $0.007 par Go |
2/ Le nombre de requêtes :
Pour Amazon S3, il faut compter 1 USD pour 200 000 demandes PUT, COPY, POST ou LIST, ou 250 000 demandes GET. Les requêtes de suppression quant à elles sont gratuites.
3/ La bande passante descendante :
Le transfert de données sortantes depuis Amazon S3 vers Internet est facturé $0.090 par Go entre 1 Go/mois et 10To/mois, puis est dégressif au-delà.
Terminologie d'Amazon S3 :
Difficile de comprendre Amazon S3 sans être capable d’en déchiffrer les codes. Certains termes sont importants à connaître pour s’y retrouver :
- Les buckets:
Point névralgique de S3, ce sont les buckets qui vont recevoir les objets fraîchement uploadés. Chaque bucket aura un nom unique au niveau mondial, nom qui se retrouvera dans l’URL publique du fichier. Il faudra donc choisir ce dernier avec soin. Autre point important : un bucket n’est pas un dossier ! Amazon limite à 100 le nombre de bucket autorisé par compte, justement pour éviter les abus. Enfin, c’est au niveau du bucket lui même que l’on applique les différentes propriétés.
- Permissions:
Grâce aux “access policy” il est possible de gérer qui à accès au bucket, et les actions qu’il peut avoir. Il est par exemple possible d’interdire la suppression de fichiers.
- Static Web Hosting:
C’est cette feature qui doit être activée pour permettre au bucket d'héberger un site ou blog statique.
- Logging:
Vous pouvez garder des logs sur les accès et actions liées à vos buckets.
- Events / Triggers:
Ici il est possible de configurer l’envoi de notifications vers d’autres services AWS à partir de triggers (PUT, DELETE etc), par exemple vers AWS Lambda.
- Versioning:
Le versioning permet de conserver un historique des modifications apportées au fichier. Il permet aussi de retrouver un fichier qui aurait été accidentellement supprimé. Attention, la mise en place du versioning sur S3 implique des coûts supplémentaires, chaque version étant considérée comme un fichier à part entière.
- Lifecycle:
Il est possible de gérer le cycle de vie des fichier stockés sur S3. Il est par exemple possible de demander la migration d’un fichier d’Amazon S3 vers Amazon Glacier après X jours.
- Cross-Region Replication:
L’option cross-region replication réplique chaque objet ajouté dans un bucket S3 (exemple : Irlande) vers un bucket S3 d’une autre région (exemple : Singapoure).
- Tags:
Cette propriété permet d’organiser vos buckets et de suivre vos ressources et leurs utilisations et le coût lié.
- Requester Pays:
Ici Amazon vous laisse la possibilité de distinguer les coûts de stockage (au Go/mois) des coûts d’utilisation des données (nombre de requêtes et bande passante). Le Requester Pays propose de faire porter ce coût d’utilisation à l’utilisateur téléchargeant vos données. Couplé à Amazon DevPay, il est même possible de faire un profit sur la mise à disposition de vos datas en fixant un tarif à votre discrétion - moyennant la prise d’un pourcentage par Amazon.
- Amazon S3 Transfer Acceleration :
Amazon S3 Transfer Acceleration permet d'accelerer les téléchargements directs. Il n'y a pas besoin d'utiliser des protocoles personalisés ou d'appliance particulière : une simple case à cocher suffit ! Afin de vous proposer des uploads jusqu'à 6 fois plus rapides, AWS se repose sur les POP (Point Of Presence) de son CDN CloudFront. Ce service sera particulièrement utile lors du transfert de données entre différentes régions AWS et/ou continents, ainsi que pour le transfert de fichiers très volumineux.
Si le débit montant vers AWS est généralement gratuit, le choix de cet accélérateur vous coutera 0,04 USD par Go uploadé. Le débit déscendant pourra également profiter de cette accélération. Il faudra alors ajouter 0,04 USD/Go aux coûts habituels de la bande descendante de S3 vers Internet.
Voilà, vous savez tout ! Vous êtes désormais au top sur Amazon S3 :) Allez plus loin avec notre article pour tout savoir sur Amazon RDS !
N'hésitez pas à nous faire vos retours sur notre twitter @Osones, ou à contacter nos Experts si vous avez besoin d'aide !
Vous pouvez aussi rejoindre le groupe LinkedIn des Utilisateurs Francophones d'Amazon Web Services (AWS).
Découvrez les derniers articles d'alter way
- : Prowler : L'outil de sécurité multi-cloud indispensable pour renforcer votre infrastructure
- : Kubernetes : plateforme "star" de l'IT et levier d'innovation des entreprises
- AI_dev2024
- : DirectPV : Avoir du stockage bloc distribué facilement dans kubernetes
- : Simple comme GitOps : kluctl
- Conférence Wax 2024 @thecamp