2014-12-03 77 views
39

我通過SSH登錄到GCE實例。從那裏,我想與服務帳戶的幫助來訪問存儲:gsutil拷貝返回GCE的「AccessDeniedException:403權限不足」

GCE> gcloud auth list 
Credentialed accounts: 
- [email protected] (active) 

我第一次確信,這個服務賬戶被標記「可以編輯」在我的工作項目的權限,我也取得了一定要給他的水桶寫ACL我希望他能複製文件:

local> gsutil acl ch -u [email protected]:W gs://mybucket 

但後來以下命令將失敗:

GCE> gsutil cp test.txt gs://mybucket/logs 

(我還相信,「日誌「在「mybucket」下創建)。

該錯誤消息我得到的是:

Copying file://test.txt [Content-Type=text/plain]... 
AccessDeniedException: 403 Insufficient Permission    0 B 

我缺少什麼?

+2

GCE VM是完全控制還是讀/寫GCS範圍? – jterrace 2014-12-03 17:09:44

+0

謝謝你指出。我確實沒有意識到這個選擇。我使用啓用的選項重新創建了實例,並且它工作正常。如果你可以建議打開國旗作爲答案,我會高興地舉報。 – Christophe 2014-12-04 09:54:06

回答

43

另一個需要注意的地方是確保在創建GCE虛擬機時設置合適的範圍。即使虛擬機連接了服務帳戶,也必須爲其分配devstorage範圍才能訪問GCS。

例如,如果您使用devstorage.read_only作用域創建了VM,即使您的服務帳戶有權寫入存儲桶,嘗試寫入存儲桶也會失敗。您需要devstorage.full_controldevstorage.read_write

有關詳細信息,請參閱關於Preparing an instance to use service accounts的部分。

+0

如何爲已運行的實例做到這一點? – 2015-08-06 13:46:56

+0

你不能改變已經運行的實例的範圍 – jterrace 2015-08-06 21:16:30

+0

我用權限重新創建了我的實例,它現在都可以工作。謝謝 – Syclone 2016-07-26 06:46:16

9

的gsutil配置-b

然後衝浪到它所提供的URL, [CLICK允許]

然後複製的驗證碼和粘貼到終端。

+0

注意,如果您從'ssh'運行'gsutil',這不起作用。 – bfontaine 2016-12-30 14:17:18

+0

只要不打開瀏覽器,它「不起作用」。相反,它提供了一個URL供您手動複製和粘貼。 – BuvinJ 2017-09-08 19:34:24

+0

這適用於在瀏覽器中使用控制檯的用戶。 -2017 – igaurav 2017-12-17 08:26:36

13

你必須與有你需要該項目的權限的帳戶登錄:

gcloud auth login 
-3

TL;博士這是通過使用他們的命令生產線使用率awscli我在,迫使AWS配置解決蘋果

  1. 通過BREW安裝awscli:brew install awscli
  2. 運行一次安裝aws configure和提示
  3. 輸入您的密鑰ID和訪問密鑰3210
  4. 現在嘗試gsutil的舉動,它應該工作。
+2

問題是關於GCE,而不是AWS。 – talonx 2017-09-08 06:08:46