Estou usando gcsfuse
o Google Compute Engine. Montei uma pasta com bucket de armazenamento em nuvem, mas não consegui criar nenhum arquivo dentro dela:
touch t1
com um erro:
touch: cannot touch 't1': Input/output error
A solução para o problema é darEscopo de acesso da API Cloud: armazenamento: leitura/gravação
Como alterar os escopos de acesso da API do Cloud no GCP Compute Engine sem interromper a instância? Por favor, me forneça a solução para esse problema.
Desde já, obrigado!
Responder1
Parece que você não tem permissões suficientes no GCS. Dê uma olhada nodocumentaçãopara gcsfuse
. Se você estiver usando uma conta de serviço em uma VM do GCE, configure a VM com o storage-full
escopo de acesso.
Você pode tentar consertar desta maneira:
- crie uma conta de serviço (mais informaçõesaqui)
- crie uma chave para a conta de serviço e baixe o arquivo .json
- conceder um papel apropriado à conta de serviço
- conceda as permissões apropriadas à conta de serviço no bucket
- faça upload das credenciais .json da conta de serviço para a VM
defina uma variável de ambiente que contenha o caminho para as credenciais da conta de serviço ao chamar
gcsfuse
pela linha de comando:GOOGLE_APPLICATION_CREDENTIALS = /root/credentials/service_credential_file.json gcsfuse bucket_name /my/mount/point
use a
key_file
opção para atingir o mesmo objetivofstab
documentadoaqui.
Além disso, você precisa usar a variável ou key_file
opção de ambiente mesmo se tiver configurado a conta de serviço na VM usando:
gcloud auth activate-service-account --key-file /root/credentials/service_credential_file.json
Atualize sua pergunta com suas etapas, comandos e resultados completos se ainda tiver problemas.