2016-11-25 26 views
1

我想用我的服務帳戶本地上傳使用簡單的代碼,谷歌雲存儲的圖像在我的機器上的谷歌雲存儲:上傳文件到本地使用的NodeJS

const storage = require('@google-cloud/storage'); 
const fs = require('fs'); 
const gcs = storage({ 
    projectId: 'ID', 
    keyFilename: 'KEYNAME' 
}); 
var bucket = gcs.bucket('BUCKET NAME'); 

bucket.upload('hiking-image.jpg', function(err, file) { 
    if (err) throw new Error(err); 
}); 

if (err) throw new Error(err); 
     ^

但是,我得到的錯誤下面的消息。 Google Cloud API只能在部署在App Engine上時才能工作,還是我在這裏做錯了?我能夠讓Google Vision API使用相同的服務帳戶在本地工作。

Error: ApiError: Forbidden 
    at /Users/user/google-cloud/upload/upload.js:10:20 
    at Pumpify.<anonymous> (/Users/user/node_modules/@google-cloud/storage/src/bucket.js:1218:9) 
    at emitOne (events.js:101:20) 
    at Pumpify.emit (events.js:188:7) 
    at Pumpify.Duplexify._destroy (/Users/user/node_modules/duplexify/index.js:184:15) 
    at /Users/user/node_modules/duplexify/index.js:175:10 
    at _combinedTickCallback (internal/process/next_tick.js:67:7) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 
+0

問題是很老,但你授權給雲存儲服務帳戶API訪問? – Overdrivr

+0

的確如此:)這只是Google雲端控制檯中的服務帳戶的一個錯誤 – user3642173

+0

我已經提供了更多文檔的答案,如果它適合您,隨時接受它。乾杯! – Overdrivr

回答

1

您需要爲您服務的帳戶給予適當的角色。轉到谷歌的雲控制檯菜單中的「IAM和Admin」

  1. 創建服務帳戶
  2. 轉到IAM面板
  3. 編輯剛創建的服務帳戶的角色。選擇雲存儲並使其成爲完全管理員,但最好的方法是根據您的需要將其製作爲存儲對象的創建者或讀者。

google cloud console screenshot

0

我根本就在雲控制檯中的錯誤與我的服務帳戶Overdrivr指出