如何在伺服器上將 GOOGLE_APPLICATION_CREDENTIALS 與 gcloud 一起使用?
gcloud
在 GCE 之外以非互動方式使用命令行的最簡單方法是什麼?最好不要用憑證文件亂扔文件系統,這就是這樣gcloud auth activate-service-account --key-file=...
做的。有許多使用
gcloud
服務帳戶的案例。例如,在伺服器上,我想GOOGLE_APPLICATION_CREDENTIALS
在執行我的應用程序之前測試是否正確設置並具有所需的權限。或者,我想執行一些設置腳本或 cron 腳本,用gcloud
命令行執行一些檢查。Google Cloud 庫(例如python、java)自動使用環境變數
GOOGLE_APPLICATION_CREDENTIALS
向 Google Cloud 進行身份驗證。但不幸的是,這個命令行似乎對gcloud
.gcloud
在保持文件系統完好無損的情況下,什麼是乾淨的使用方法?$ 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.
gcloud
一般不使用GOOGLE_APPLICATION_CREDENTIALS
環境變數。它只有一些命令來幫助在gcloud auth application-default [login|revoke|print-access-token...]
.預設情況下
gcloud
,其配置儲存在 ${HOME}/.config/gcloud 中。可以通過設置CLOUDSDK_CONFIG
環境變數來覆蓋該位置。也可以(雖然更乏味)覆蓋大多數設置,這樣它們就不需要通過
gcloud config set ...
和/或預先配置gcloud auth activate-service-account
。對於每個設置,都可以指定環境變數。例如,您嘗試使用服務帳戶密鑰文件的等效命令是:
$ CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=/etc/my-service-account-4b4b6e63aaed.json \ gcloud alpha pubsub topics publish testtopic hello
請注意,這仍然會記憶體憑據,
CLOUDSDK_CONFIG
因為它需要記憶體訪問令牌,因此它不必在每次呼叫時刷新它。在我看來,對於您的案例,最佳選擇是
- 設置
CLOUDSDK_CONFIG
為某個臨時目錄gcloud auth activate-service-account --key-file=...
- …
gcloud
用來做你的工作…- 刪除臨時
CLOUDSDK_CONFIG
目錄。