Estoy usando gcsfuse
dentro de Google Compute Engine. Monté una carpeta con un depósito de almacenamiento en la nube pero no pude crear ningún archivo dentro de ella:
touch t1
con un error:
touch: cannot touch 't1': Input/output error
La solución al problema es darAlcance del acceso a la API de la nube: almacenamiento: lectura/escritura
¿Cómo cambiar los alcances de acceso a la API de la nube en GCP Compute Engine sin detener la instancia? Por favor proporcionenme la solución para este problema.
¡Gracias de antemano!
Respuesta1
Parece que no tienes suficientes permisos de GCS. Echa un vistazo adocumentaciónpara gcsfuse
. Si está utilizando una cuenta de servicio en una máquina virtual de GCE, asegúrese de configurar la máquina virtual con el storage-full
alcance de acceso.
Puedes intentar solucionarlo de esta manera:
- crear una cuenta de servicio (más informaciónaquí)
- cree una clave para la cuenta de servicio y descargue el archivo .json
- otorgar un rol apropiado a la cuenta de servicio
- otorgar los permisos apropiados a la cuenta de servicio en el depósito
- cargue las credenciales .json para la cuenta de servicio en la VM
defina una variable de entorno que contenga la ruta a las credenciales de la cuenta de servicio cuando llame
gcsfuse
desde la línea de comando:GOOGLE_APPLICATION_CREDENTIALS = /root/credentials/service_credential_file.json gcsfuse bucket_name /my/mount/point
use la
key_file
opción para lograr el mismo objetivo talfstab
como está documentadoaquí.
Además, debe usar la variable u key_file
opción de entorno incluso si ha configurado la cuenta de servicio en la VM usando:
gcloud auth activate-service-account --key-file /root/credentials/service_credential_file.json
Actualice su pregunta con sus pasos, comandos y resultados completos si aún tiene un problema.