使用Node.js執行google cloud storage簽章

繼續分享一篇在Node.js執行google cloud storage簽章的小範例程式碼:

var gcloud = require('gcloud');
var project_id = 'your-project-id';
var key_path = '/path/to/keyfolder';
var key_name = 'your-project-json-key.json';
var storage = gcloud.storage({
  projectId: project_id,
  keyFilename: key_path + '/' + key_name
});
var bucket = storage.bucket('your-bucket-name');
bucket.file('your-object-name').getSignedUrl({
  action: 'read',
  expires: Math.round(Date.now() / 1000) + (60 * 5) // 5 minutes.
}, function(err, url) {
  if(err) console.log('>>>error:' + err);
  console.log('read:', url);
});


這邊是透過gcloud這個套件,由Google Cloud Platform Team所撰寫的...

其中使用到的service account金鑰封裝方式是json格式的那個... 整個service account的建置操作過程如下:

Step1: 建立Service Account

進入頁面:Cloud Console > APIs & auth > Credentials


點選"Create new Client ID"後,選擇Service account


Step2: 下載JSON Key

最後,Service account建立好的畫面如下:


在Service account下會有產生p12 key與json key的按鈕,本次範例所需要的是json key,下載後把位置放到程式中,即可對cloud storage的文件進行簽署動作。

Step3: 測試

接下來可以透過上面的範例來執行物件位置的簽章:

$ node test-gcs.js
http://storage.googleapis.com/test-centos6-upload/out.png?GoogleAccessId=288...ppn1h@developer.gserviceaccount.com&Expires=1431164746&Signature=ApIXayh3hbplWhCl8Q2BmxvEkuyOz857SAPGBLObSYBstaKq4dnzOwWCefz6Cldd4I....(skip).....79tXkbV0%3D


簽章完畢後,即代表這個物件可以透過http(s)存取了!直接使用這個URL下載文件吧 :D