使用NodeJS在本地上传文件到Google Cloud存储

我正尝试使用我的服务帐户在本地计算机上使用简单代码将图像上传到Google云端存储:

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) 

您需要为您的服务帐户提供适当的angular色。 转到谷歌云控制台,菜单“IAM和pipe理员”

  1. 创build一个服务帐户
  2. 去IAM面板
  3. 编辑您刚刚创build的服务帐户的angular色。 select云存储并使其成为完整的pipe理员,但最好的方法是根据您的需要将其制作为存储对象的创build者或读者。

谷歌云控制台截图

Overdrivr指出,我只是在云端控制台的服务帐户中发生错误