gcloud
geralmente não usa a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
. Ele possui apenas alguns comandos para facilitar a configuração dessas credenciais padrão do aplicativo em gcloud auth application-default [login|revoke|print-access-token...]
.
Por padrão gcloud
armazena sua configuração em $ {HOME} /. config / gcloud. É possível sobrescrever esse local definindo a variável de ambiente CLOUDSDK_CONFIG
.
Também é possível (embora mais tedioso) substituir a maioria das configurações, de modo que elas não precisem ser pré-configuradas via gcloud config set ...
e / ou gcloud auth activate-service-account
. Para cada configuração, pode-se especificar a variável de ambiente.
Por exemplo, o comando equivalente que você tentou usar o arquivo de chaves da conta de serviço seria:
$ CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=/etc/my-service-account-4b4b6e63aaed.json \
gcloud alpha pubsub topics publish testtopic hello
Observe que isso ainda armazenará em cache credenciais em CLOUDSDK_CONFIG
, já que ele precisa armazenar em cache o token de acesso, para que não precise atualizá-lo em cada chamada.
Para o seu caso de uso, a melhor opção a meu ver seria
- Defina
CLOUDSDK_CONFIG
para algum diretório temporário -
gcloud auth activate-service-account --key-file=...
- ... use
gcloud
para fazer seu trabalho ... - Remova o diretório temp
CLOUDSDK_CONFIG
.