Il ressort du Insufficient Permission
des erreurs dans votre sortie de débogage indiquant que gcsfuse ne dispose pas d'autorisations suffisantes pour votre compartiment. Il a probablement un accès en lecture seule.
Assurez-vous de lire la documentation sur les informations d'identification pour gcsfuse. En particulier, si vous utilisez un compte de service sur une VM GCE, assurez-vous de configurer la VM avec le storage-full
portée d'accès.
Votre problème provient d'autorisations insuffisantes, mais vous pas besoin de détruire et de recréer la machine virtuelle avec une portée différente pour résoudre ce problème. Voici une autre approche plus adaptée aux systèmes de production :
- Créer un compte de service
- Créez une clé pour le compte de service et téléchargez le fichier JSON
- Attribuer un rôle approprié au compte de service
- Accorder les autorisations appropriées au compte de service sur le bucket
- Télécharger les identifiants JSON du compte de service sur la VM
Enfin, définissez une variable d'environnement contenant le chemin d'accès aux informations d'identification du compte de service lors de l'appel de gcsfuse depuis la ligne de commande :
GOOGLE_APPLICATION_CREDENTIALS=/root/credentials/service_credential_file.json gcsfuse bucket_name /my/mount/point
Utilisez le key_file
option pour accomplir la même chose dans fstab
. Ces deux options sont documentées dans la documentation des identifiants gcsfuse. (EDIT :cette option est documentée, mais ne fonctionnera pas pour moi.)
Fait intéressant, vous devez utiliser la variable d'environnement ou key_file
option même si vous avez configuré le compte de service sur la VM en utilisant :
gcloud auth activate-service-account --key-file /root/credentials/service_credential_file.json
Pour une raison quelconque, gcsfuse ignore le compte authentifié actif.
Utilisation du storage-full
lors de la création d'une machine virtuelle a des implications sur la sécurité et la stabilité, car elle permet à cette machine virtuelle d'avoir un accès complet à chaque compartiment appartenant au même projet. Votre serveur de stockage de fichiers doit-il vraiment pouvoir écraser les journaux dans un bucket de journalisation ou lire les sauvegardes de la base de données dans un autre bucket ?