Qual é a maneira mais simples de usar a gcloud
linha de comando de maneira não interativa com uma Conta de Serviço fora do GCE? De preferência, sem sobrecarregar o sistema de arquivos com arquivos de credenciais, e é gcloud auth activate-service-account --key-file=...
isso que faz.
Existem muitos casos de uso para usar gcloud
com uma conta de serviço. Por exemplo, em um servidor, eu gostaria de testar se o GOOGLE_APPLICATION_CREDENTIALS
está definido corretamente e tem as permissões necessárias antes de executar meu aplicativo. Ou, eu gostaria de executar alguns scripts de instalação ou scripts cron que realizam alguma verificação com a gcloud
linha de comando.
As bibliotecas do Google Cloud (por exemplo , python , java ) usam automaticamente a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
para autenticar no Google Cloud. Infelizmente, porém, essa linha de comando parece não ter efeito gcloud
. O que é uma maneira limpa de usar gcloud
, deixando intacto o sistema de arquivos?
$ GOOGLE_APPLICATION_CREDENTIALS=/etc/my-service-account-4b4b6e63aaed.json gcloud alpha pubsub topics publish testtopic hello
ERROR: (gcloud.alpha.pubsub.topics.publish) You do not currently have an active account selected.
Please run:
$ gcloud auth login
to obtain new credentials, or if you have already logged in with a
different account:
$ gcloud config set account ACCOUNT
to select an already authenticated account to use.
fonte
Respostas:
gcloud
geralmente não usaGOOGLE_APPLICATION_CREDENTIALS
variável de ambiente. Ele possui apenas alguns comandos para facilitar a configuração dessas credenciais padrão do aplicativogcloud auth application-default [login|revoke|print-access-token...]
.Por padrão,
gcloud
armazena sua configuração em $ {HOME} /. Config / gcloud. É possível substituir esse local definindoCLOUDSDK_CONFIG
a variável de ambiente.Também é possível (embora mais tedioso) substituir a maioria das configurações, para que elas não precisem ser pré-configuradas via
gcloud config set ...
e / ougcloud auth activate-service-account
. Para cada configuração, pode-se especificar uma variável de ambiente.Por exemplo, o comando equivalente que você tentou usar o arquivo de chave da conta de serviço seria:
Observe que isso ainda armazenará em cache as credenciais,
CLOUDSDK_CONFIG
pois ele precisa armazenar em cache o token de acesso, para que não seja necessário atualizá-lo a cada chamada.Para o seu caso de uso, a melhor opção, na minha opinião, seria
CLOUDSDK_CONFIG
para algum diretório temporáriogcloud auth activate-service-account --key-file=...
gcloud
para fazer o seu trabalho ...CLOUDSDK_CONFIG
diretório temporário .fonte
Você já viu a
--account
opção? Gostar( Referência )
Em relação a "De preferência sem desarrumar o sistema de arquivos com arquivos de credenciais", não tenho certeza se isso é possível.
fonte
--account=
quando as credenciais forem ativadas.1) Crie uma conta de serviço no GCP IAM. Marque a caixa "Fornecer uma nova chave privada" e selecione JSON como o tipo de arquivo.
2) Faça o download do arquivo JSON para o seu servidor e digite:
gcloud auth activate-service-account --key-file serviceaccount.json
3) Verifique se as credenciais foram aplicadas executando
gcloud auth list
.fonte