Agence web » Actualités du digital » Comment monter un compartiment S3 localement sur Linux

Comment monter un compartiment S3 localement sur Linux

À bien des égards, les compartiments S3 agissent comme des disques durs cloud, mais ne sont que du «stockage au niveau objet», pas du stockage au niveau bloc comme EBS ou EFS. Cependant, il est possible de monter un compartiment en tant que système de fichiers et d'y accéder directement en lisant et en écrivant des fichiers.

Les avantages et les limites de S3 en tant que système de fichiers

La magie qui fait fonctionner toute cette configuration est un utilitaire appelé s3fs-fuse. FUSE signifie Filesystem in Userspace et crée un système de fichiers virtuel monté. s3fs s'interface avec S3 et prend en charge un large sous-ensemble de POSIX, notamment la lecture, l'écriture, la création de répertoires et la définition de métadonnées de fichier.

L’un des grands avantages de l’utilisation de S3 par rapport au stockage traditionnel est qu’il très efficace pour stocker des objets individuels à long terme, sans aucune limite sur la taille totale du godet. Vous pouvez stocker 10 photos ou 10 millions de photos dans S3, et cela fonctionnera en grande partie de la même manière. Dans les applications où vous avez besoin d'un disque volumineux (et bon marché), S3 a du sens, et si l'application que vous intégrez souhaite accéder aux fichiers, c'est un bon moyen de relier les deux.

Bien sûr, ce n'est pas sans limites. Bien qu'il fonctionne de manière relativement comparable à une API S3 en termes de performances lors du stockage et de la récupération de fichiers entiers, il ne remplace évidemment pas entièrement le stockage en bloc connecté au réseau beaucoup plus rapide. Il y a une raison pour laquelle cette configuration n'est pas officiellement prise en charge par AWS: vous rencontrerez des problèmes de concurrence avec plusieurs clients utilisant des fichiers, en particulier si vous avez des clients dans différentes régions accédant au même compartiment. Bien sûr, S3 a également cette limitation, et cela ne vous empêche pas d'avoir plusieurs clients connectés, mais c'est plus apparent lorsque FUSE semble vous donner un accès «direct». Ce n'est pas le cas, et vous devrez garder ces limitations à l'esprit.

AWS dispose d'un service similaire à celui-ci: Storage Gateway, qui peut agir comme un NAS local et fournit un stockage en bloc local soutenu par S3. Cependant, il s'agit davantage d'une solution d'entreprise et elle nécessite un serveur physique complet pour déployer une image VMWare. s3fs, d'autre part, est une solution simple à serveur unique, bien qu'elle ne fasse pas beaucoup de mise en cache.

Donc, si vous pouvez convertir des applications en utilisant l'API S3 plutôt qu'un FUSE, vous devriez le faire à la place. Mais si vous êtes d'accord avec un peu de solution hacky, s3fs peut être utile.

Configuration de s3fs-fuse

Comparé à la façon dont il est hacky, il est étonnamment facile à configurer. s3fs-fuse est disponible auprès de la plupart des gestionnaires de packages, bien qu'il puisse simplement être appelé s3fs sur certains systèmes. Pour les systèmes basés sur Debian comme Ubuntu, ce serait:

sudo apt install s3fs

Vous devrez créer un utilisateur IAM et lui donner l'autorisation d'accéder au compartiment que vous souhaitez monter. À la fin, vous obtiendrez une clé d'accès secrète:

Vous pouvez les coller dans le fichier d'informations d'identification AWS standard, ~/.aws/credentials, mais si vous souhaitez utiliser une clé différente, s3fs prend en charge un fichier de mot de passe personnalisé. Collez à la fois l'ID de clé d'accès et le secret dans /etc/passwd-s3fs , au format suivant:

echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > /etc/passwd-s3fs

Et assurez-vous que les autorisations sur ce fichier de clés sont définies correctement, sinon il se plaindra:

chmod 600 /etc/passwd-s3fs

Ensuite, vous pouvez monter le compartiment avec la commande suivante:

s3fs bucket-name /mnt/bucket-name

Si cela ne fonctionne pas, vous pouvez activer la sortie de débogage avec quelques indicateurs supplémentaires:

-o dbglevel=info -f -o curldbg

Si vous souhaitez que cela se monte au démarrage, vous devrez ajouter ce qui suit à votre /etc/fstab:

s3fs#bucket-name /mnt/bucket-name fuse _netdev,allow_other,umask=227,uid=33,gid=33,use_cache=/root/cache 0 0

★★★★★