Eu achei que seria muito fácil fazer isso, mas não consigo trabalhar:
Estou tentando enviar arquivos de um servidor (GCE) para um intervalo de armazenamento do Google Cloud. Para evitar a concessão de muitos outros direitos ao comando gsutil
no servidor, criei uma "Conta de serviço" na seção de credenciais do meu projeto do Google.
Para o intervalo gs://mybucket
, adicionei o endereço de e-mail dessa conta de serviço com permissões OWNER como USER ao grupo.
No servidor, ativei a conta de serviço da seguinte forma:
$gcloud auth activate-service-account --key-file <path-to-keyfile> myservice
$gcloud auth list
Credentialed accounts:
- [email protected]
- myservice (active)
To set the active account, run:
$ gcloud config set account <account>
Então tudo parece bem até agora. No entanto, o acesso ao bucket falha:
$gsutil cp tempfile gs://mybucket
CommandException: Error retrieving destination bucket gs://mybucket/: [('PEM routines', 'PEM_read_bio', 'no start line')]
$gsutil cp tempfile gs://mybucket/tempfile
Failure: [('PEM routines', 'PEM_read_bio', 'no start line')].
Claro, verifiquei se as ACLs do bucket exibem a conta de serviço como OWNER. Eu também tentei isso em uma máquina diferente com um sistema operacional diferente. Mesmo resultado. Escusado será dizer que eu não consigo entender as mensagens de erro. Eu apreciaria todas as sugestões. Registro de erros detalhado em esta essência .
Atualização:
Depois de remover ~/.config
, em que gcloud
armazena seus dados de autorização, use o comando obsoleto
gsutil config -e
gerará ~/.boto
com a conta de serviço conforme pretendido. O acesso subseqüente a gs://mybucket
funciona .
No entanto, não tenho certeza se esse é o caminho que devo seguir. Como faço para que isso funcione usando gcloud auth
?