2015-11-24 96 views
1

我試圖自動化一些gsutils命令,但努力查看身份驗證文件保存在哪裏以及如何重新使用(如果這就是發生了什麼)。自動gsutil命令

我已經通過在bash的gcloud init進程不見了......

curl https://sdk.cloud.google.com | bash 
gcloud init 

一切運作良好,當我運行

'gsutil ls' 

現在我想要自動化的過程,所以這將工作在一臺新的服務器上,並添加到它的crontab中(而不是每次都創建一個新的配置)。

我看到設置環境變量GOOGLE_APPLICATION_CREDENTIALS的一提,所以我複製從網頁登錄我的憑據到一個文件,試了一下,如想以不同的用戶來測試

export GOOGLE_APPLICATION_CREDENTIALS=/home/user/.gsutil/mycreds 

,然後透過gsutil LS,但失敗。

因此,我認爲我的整個證書有點不對。我假設有一個文件最初由gcloud創建,我可以使用,但是我無法在任何地方看到它?

我已經看過答案here,但根據最後的評論,現在看起來並不是最新的。

編輯:我按照Zacharys步驟,gcloud AUTH激活服務賬戶--key文件= myfilelocation

然而,隨着 'gsutil會LS' 我現在得到..

You are attempting to perform an operation that requires a project id, with none configured. Please re-run gsutil config and make sure to follow the instructions for finding and entering your default project id. 

所以我的下一個問題是,它在哪裏尋找項目ID?如果我運行gsutil config,它似乎會創建一組新的auth,然後創建另一個錯誤,所以刪除了它。

+1

gcloud將其配置存儲在〜/ .config/gcloud中,因此如果您有一個手動設置的工作安裝,至少應該能夠將該配置複製到新服務器。不過,可能有更優雅的方式。 –

+0

謝謝,我可以在那裏看到相關文件。 – Ian

回答

3

你應該能夠做到這一點,而不會潛入太深的gsutil認證的實施。

如果您使用獨立的gsutil(如果您通過this method安裝),則鏈接問題中的說明仍然有效(正如Travis指出的那樣)。

如果您想繼續使用通過Cloud SDK提供的gsutil,則應使用service accounts。服務帳戶是無頭機器或非交互式環境中驗證的首選方法。

你的流程將類似於以下內容:

  1. 通過Google Cloud Developers Console創建服務帳戶。
  2. 在遠程計算機上,安裝Cloud SDK和gsutil。如果您沒有以交互方式安裝,最好跳過curl ... | bash方法。請下載this install archive,解壓縮,然後運行install.sh腳本。該腳本有選項(可用--help顯示);如果您爲所有這些選項指定選項,則不會提示您。
  3. 將服務帳戶複製到遠程機器。運行gcloud auth activate-service-account --key-file=/path/to/service-account.json
  4. 運行gsutil。你應該得到適當的認證。
+0

您也可以將服務帳戶與獨立的gsutil一起使用,這比複製此場景的用戶憑據更有意義。 –

+0

謝謝,我得到了一個地方,我似乎auth,但現在它沒有在配置中找到項目ID,或者它的設置,或如何specificy它的inclear?我在問題的末尾添加了一個編輯。好吧,我想我得到的地方gcloud config set project'project-id'似乎是好的 – Ian

+0

gcloud config set項目'你的項目ID'應該是你所需要的。 –