AWS a annoncé la disponibilité générale des mountpoint S3 en août 2023, découvrez leur fonctionnement et comment les utiliser.
Que sont les mountpoint pour Amazon S3
Né à la suite de nombreux retours clients d’AWS, “Mountpoint for Amazon S3” est un client open-source pour Linux maintenu et proposé gratuitement par Amazon Web Services.
Son objectif est simple et pourtant très puissant, le mountpoint S3 permet de monter un bucket S3 de la même façon qu’on le ferait avec un file system local.
Développé en Rust, ce client agit comme un bridge système qui permet d’utiliser les opérations fichiers comme read
ou open
nativement. Mountpoint traduit alors les opérations fichiers systèmes en requêtes API AWS S3 natives telles que nous pourrions les utiliser au travers de la CLI du cloud provider (Command Line Interface).
Comment utiliser Mountpoint ?
Installation
L’installation est simple, Mountpoint est disponible au format RPM et peut être installé sur une EC2 Linux. Vous avez simplement besoin de fetch RPM et de l’installer en utilisant yum :
$ wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
$ sudo yum install ./mount-s3.rpm
Pour les distributions basées Debian vous pouvez également l’installer avec apt-get.
Configuration
Une fois installé, vous pouvez configurer votre mountpoint comme ceci :
mount-s3 MY-BUCKET /path/to/mount
De cette façon, vous “mappez” votre bucket distant avec un répertoire local pour pouvoir opérer vos commandes sur les fichiers, le mountpoint fait le reste.
Utilisation
Une fois l’installation et configuration faites, vous pouvez utiliser ce répertoire comme bon vous semble, vos scripts et applications peuvent fonctionner normalement avec une donnée pourtant distante sur votre bucket.
$ cd /path/to/mount
$ ls -l | head
total 0
drwxr-xr-x 2 yannraffin yannraffin 0 Sep 7 10:14 dataset
drwxr-xr-x 2 yannraffin yannraffin 0 Sep 7 10:14 output
drwxr-xr-x 2 yannraffin yannraffin 0 Sep 7 10:14 logs
drwxr-xr-x 2 yannraffin yannraffin 0 Sep 7 10:14 build
En termes de sécurité et de gestion des accès, tout ce que vous connaissez sur AWS et S3 s’applique. Mountpoint se “contente” (et c’est déjà pas mal) de traduire les appels sytèmes en appel API, vous devez alors gérer vos accès IAM pour pouvoir accéder au bucket, et configurer vos éventuelles bucket policies et/ou ACL le cas échéant.
La gestion des accès est la même que celle de la CLI AWS, y compris les priorités d’accès (role, variables d’env, fichier de config, etc…).
Limitations actuelles (09/2023)
Le projet est à retrouver sur Github sur cette url :
https://github.com/awslabs/mountpoint-s3/tree/main
A ce jour, le système ne propose pas de compatibilité Windows, mais une issue Github existe et ce point est en réflexion sur la roadmap du projet.
Aussi, les mountpoints ont été pensés pour des applications très demandeuses en lecture et lorsque la performance doit primer sur le reste. C’est pour cela que Mountpoint-S3 ne respecte pas entièrement le standard POSIX pour les opérations fichiers (principalement pour les écritures).
Mountpoint est optimisé pour la lecture séquentielle de fichiers volumineux et effectue automatiquement plusieurs requêtes simultanées à S3 pour améliorer le débit lorsque les lectures sont séquentielles.
La prise en charge des écritures ne se fait uniquement pour les nouveaux fichiers et elles doivent être effectuées de manière séquentielle. Si vous essayez d’ouvrir un fichier existant avec un accès en écriture, l’opération d’ouverture échouera avec une erreur d’autorisation.
Par défaut, Mountpoint n’autorise pas la suppression d’objets existants avec des commandes comme rm
. Pour activer la suppression, transmettez l’indicateur —allow-delete à Mountpoint au moment de la configuration. Les opérations de suppression suppriment immédiatement l’objet de S3, même si le fichier est en cours de lecture.
Enfin, vous ne pouvez pas renommer un fichier existant à l’aide de Mountpoint.
C’est assez simple à résumer, toute action qui ne se traduirait pas simplement par une opération S3 n’est pas supportée. Vous pourrez retrouver ces limitations détaillées dans le SEMANTICS.md du répo : https://github.com/awslabs/mountpoint-s3/blob/main/doc/SEMANTICS.md
Conclusion
Ce projet est extrêmement utile et prometteur par sa simplicité d’utilisation mais aussi sa puissance. Ce type de solution ouvre désormais la porte à de nouvelles architectures qui nécessitaient souvent un file system partagé un peu inutilement (lorsque le système réalisait 80 à 90% de lecture et pas d’écriture sur des fichiers existants ou d’écriture concurrente).
Qui plus est, ce dispositif de mountpoint n’ajoute aucun surcoût complémentaire à votre utilisation du cloud (uniquement la facturation classique S3).