Comment monter un compartiment S3 localement sur Linux

0
220

À bien des égards, les compartiments S3 agissent comme des disques durs cloud, mais ne sont qu'au niveau de l'objet stockage,” ne pas bloquer le stockage de niveau comme EBS ou EFS. Cependant, il est possible de monter un bucket 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 il crée un système de fichiers virtuel monté. s3fs s'interface avec S3 et prend en charge un grand sous-ensemble de POSIX, y compris 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 est très efficace pour stocker des objets individuels à long terme, sans aucune limite sur la taille totale du bucket. 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 veut un accès aux fichiers, c'est un bon moyen de faire le pont entre les deux.

Bien sûr, ce n'est pas sans limites. Bien qu'il fonctionne assez comparativement à 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 de 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 simultanéité avec plusieurs clients utilisant des fichiers, en particulier si vous avez des clients dans différentes régions qui accèdent 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 évident lorsque FUSE semble vous donner un “direct” accès. Ce n'est pas le cas, et vous devrez garder ces limitations à l'esprit.

AWS propose un service similaire à cette passerelle de stockage, qui peut agir comme un NAS local et fournit un stockage de bloc local soutenu par S3. Cependant, il s'agit davantage d'une solution d'entreprise et nécessite un serveur physique complet sur lequel déployer une image VMWare. s3fs, en revanche, est une solution simple à serveur unique, bien qu'il 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 une solution un peu piratée, s3fs peut être utile.

Configuration de s3fs-fuse

Comparé à son niveau de piratage, il est étonnamment facile à configurer. s3fs-fuse est disponible auprès de la plupart des gestionnaires de packages, bien qu'il puisse simplement s'appeler 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 coller ceux-ci 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 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 permissions sur ce fichier de clé sont correctement définies, ou il se plaindra :

chmod 600 /etc/passwd-s3fs

Ensuite, vous pouvez monter le bucket 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 voulez que cela soit monté au démarrage, vous devrez ajouter ce qui suit à votre /etc/fstab :

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