Appare dal Insufficient Permission
errori nell'output di debug che indicano che gcsfuse non dispone di autorizzazioni sufficienti per il bucket. Probabilmente ha accesso in sola lettura.
Assicurati di leggere la documentazione delle credenziali per gcsfuse. In particolare, se utilizzi un account di servizio su una VM GCE, assicurati di impostare la VM con storage-full
ambito di accesso.
Il tuo problema deriva da autorizzazioni insufficienti, ma no è necessario distruggere e ricreare la VM con un ambito diverso per risolvere questo problema. Ecco un altro approccio più adatto ai sistemi di produzione:
- Crea un account di servizio
- Crea una chiave per l'account di servizio e scarica il file JSON
- Assegna un ruolo appropriato all'account di servizio
- Concedi le autorizzazioni appropriate all'account di servizio nel bucket
- Carica le credenziali JSON per l'account di servizio nella VM
Infine, definisci una variabile di ambiente che contenga il percorso delle credenziali dell'account di servizio quando chiami gcsfuse dalla riga di comando:
GOOGLE_APPLICATION_CREDENTIALS=/root/credentials/service_credential_file.json gcsfuse bucket_name /my/mount/point
Usa il key_file
opzione per ottenere la stessa cosa in fstab
. Entrambe queste opzioni sono documentate nella documentazione delle credenziali di gcsfuse. (EDIT:questa opzione è documentata, ma non funzionerà per me.)
È interessante notare che devi usare la variabile d'ambiente o key_file
opzione anche se hai configurato l'account di servizio sulla VM utilizzando:
gcloud auth activate-service-account --key-file /root/credentials/service_credential_file.json
Per qualche motivo, gcsfuse ignora l'account con credenziali attivo.
Usando il storage-full
ambito durante la creazione di una VM ha implicazioni sulla sicurezza e sulla stabilità, perché consente a tale VM di avere pieno accesso a ogni bucket che appartiene allo stesso progetto. Il tuo server di archiviazione file dovrebbe davvero essere in grado di sovrascrivere i log in un bucket di registrazione o leggere i backup del database in un altro bucket?