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_CONFIGpara algum diretório temporário -
gcloud auth activate-service-account --key-file=... - ... use
gcloudpara fazer seu trabalho ... - Remova o diretório temp
CLOUDSDK_CONFIG.