2016-10-12 3 views
1

使用例:IBM Object Storageにアップロードされたファイル。これで、特定の遅延の後に期限切れになる署名付きURLを介して一時的なアクセスを提供したいと考えています。NodeJsを使用したIBM Bluemixオブジェクトストレージサービスの一時公開URL

SWIFTのみが正式にサポートされているため、JAVASCRIPT - > NodeJsで動作する回避策が必要です。

+0

このためのlution?私はこの問題に悩まされていた。どんな助けでも大歓迎です。 – Mdumanoj

答えて

2

SWIFT CLIをインストールし、資格情報の一時キーを設定する必要があります。

この手順は非常に重要であり、SWIFT CLIを使用することによってのみ実行できます。現在、Bluemix Consoleでこれを行う方法があるためです。

STEP 0 - ************ MANDATORY ************* SWIFT CLIをINSTALL

REF:https://new-console.ng.bluemix.net/docs/services/ObjectStorage/objectstorge_usingobjectstorage.html#using-swift-cli

STEP 1 - ************ MANDATORY ************* 秘密鍵を生成すると、長くなるほど良くなります。

$迅速ポスト-m "温度-URL-キー:2d2a3e9f12e87b1_SOMEKEY_2d2a3e9f12e87b1"

***あなたはbashで入力して、いつでもそれを取得することができます - > $迅速STAT


STEP 2 - ************オプション************* dotenvインストールパッケージ $ NPM --save dotenvをインストール

STEP 3 - **** ********オプション************ .envファイルを作成する $ touch .env

手順4 - ************オプション************ .envファイルを編集し、これらの値をとに入れます。ファイルを保存します。

(REF - >ステップ1の通り)

META_TEMP_URL_KEY = b463af8f_SOMEVALUEKEY_b463af8fb463af8f

(REF - > Bluemixコンソールによって提供される通りPROJECTID)

PROJECTID = 50e8a0e8SOMEVALUEKEYbb463af8f

require('dotenv').config(); 

var crypto = require('crypto'); 

var META_TEMP_URL_KEY = process.env.META_TEMP_URL_KEY; // See Step 1 
var baseUrl = 'https://dal.objectstorage.open.softlayer.com'; // Since my bucket is in DALLAS I am having this URL 
var HTTPMethod = 'GET'; // Always GET - As the file has been already uploaded. 
var containerName = 'expenses'; // Container Name as per in the Bluemix console - Ex: expenses 
var objectName = 'report.pdf'; // The object filename - Ex: report.pdf 
var seconds = 60; // Delay of the temporary URL to be valid. 

var tempURL = getTempURL(baseUrl, HTTPMethod, containerName, objectName, seconds); 
console.log(tempURL); // It should return in this case something like this: 
// https://dal.objectstorage.open.softlayer.com/v1/AUTH_X0X0X0X0XX0X0XX0X0X/expenses/report.pdf?temp_url_sig=Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0&temp_url_expires=1476243544 

function getTempURL(baseUrl, HTTPMethod, metaTempURLKey, projectID, containerName, objectName, seconds) { 

    var expires = Math.floor(Date.now()/1000) + seconds; 
    var url = containerName + '/' + objectName; 
    var method = HTTPMethod; 
    var key = key; 
    var objectPath = '/v1/AUTH_' + process.env.PROJECTID + '/' + url; 
    var hmacBody = method + '\n' + expires + '\n' + objectPath; 
    var sig = crypto.createHmac('sha1', key).update(hmacBody).digest('hex'); 
    var tempURL = baseUrl + objectPath + '?temp_url_sig=' + sig + '&temp_url_expires=' + expires; 

    return tempURL; 
} 
関連する問題