Bom dia! Esse erro não está relacionado ao comando em si, e sim às permissões da conta que está sendo usada dentro da VM.
Quando você executa gsutil ls, o Google Cloud verifica quem é a identidade autenticada naquele terminal e se ela tem permissão para listar buckets no projeto. O erro 403 does not have storage.buckets.list indica exatamente que essa identidade não tem acesso ao Cloud Storage.
Na prática, isso costuma acontecer por um destes motivos:
Você está dentro da VM, mas ela não tem uma service account com permissões de Storage.
Por padrão, se a VM foi criada sem configurar corretamente a conta de serviço, ela não consegue acessar buckets, mesmo que o bucket exista.
Ou então a VM até tem uma service account, mas ela não tem o papel correto (role) para acessar o bucket.
O que conferir primeiro, seguindo o fluxo da aula:
Acesse o Google Cloud Console, vá em Compute Engine > Instâncias de VM, clique na sua VM e verifique o campo Conta de serviço.
Ela deve estar definida (normalmente algo como xxxx-compute@developer.gserviceaccount.com) e não como “Nenhuma”.
Depois, vá em IAM e Admin > IAM, localize essa mesma service account e confira se ela possui pelo menos um destes papéis:
- Storage Object Viewer
- Storage Object Admin
- Storage Admin
Sem isso, o gsutil não funciona dentro da VM.
Se a VM já estiver criada sem permissões, você pode:
- Parar a VM
- Editar
- Alterar a conta de serviço
- Marcar o escopo permitindo acesso ao Cloud Storage
- Salvar e iniciar novamente
Depois disso, ao entrar novamente na VM e rodar gsutil ls, o comando deve retornar gs://site-joana/ normalmente.
Abraços.