前回までに取り扱った Node.js のエントリにて、Node.js でサードパーティ製のライブラリを利用する方法を紹介した。
- Node.js のライブラリ読み込みについてのTIPS id:waritohutsu:20110821:1313947003
- Node.js のライブラリ読み込みについてのTIPS その2 id:waritohutsu:20110823:1314117563
今回は、先日公開された Windows Azure ストレージサービス向けの Node.js ライブラリである waz-storage.js の利用方法について紹介する。
必要なライブラリの取得と配置
まず、以下のライブラリを取得する。waz-storage.js は、sax.js と xml2js.js に依存しているため、こちらも別途取得する必要がある。
- waz-storage.js
- sax.js
- xml2js.js
次に、取得したライブラリを以下のフォルダ形式で配置する。sax.js と xml2js.js 以外のファイルは、全て waz-storage.js から取得できる zip に同梱されている。
C:\node>tree /f C:. ├─lib │ │ sax.js │ │ xml2js.js │ │ │ ├─waz-blobs │ │ blob.js │ │ container.js │ │ index.js │ │ service.js │ │ │ └─waz-storage │ base.js │ core-service.js │ index.js │ utils.js │ └─support nibbler.js
サンプルアプリケーションの実行
waz-storage.js に同梱されている example.js を参考にして、コンテナを作成するだけのサンプルアプリケーションを作成した。ソースコードの詳細な解説は割愛するが、簡単なソースコードであるため、通読すれば内容は理解できるだろう。
- example-storage.js のソースコード
var waz = require('waz-storage'); waz.establishConnection( { accountName: 'normalianfeasibility', accountKey: '<キーを記述>', useSsl: true } ); waz.blobs.container.create('test1', function(err, result){ console.log(err || result); }); waz.blobs.container.create('test2', function(err, result){ console.log(result)}); //必要なら削除処理を追加すること //waz.blobs.container.delete('test1', function(err){ // console.log('\n_________| removing a container |_________\n'); // console.log(err || 'test1 container removed!'); //}); // //waz.blobs.container.delete('test2', function(err){ // console.log('\n_________| removing a container |_________\n'); // console.log(err || 'test2 container removed!'); //}); waz.blobs.container.list(function(err, result){ console.log('\n_________| listing existing containers |_________\n'); console.log(result || err.message); });
作成したサンプルアプリケーションである example-storage.js を実行する。「必要なライブラリの取得と配置」でライブラリを配置したフォルダである「c:\node\lib」を NODE_PATH に追加している点に注意してほしい。
- コマンドライン
C:\my_program\JavaScript\Node.js>set NODE_PATH=.;c:\\node\\lib C:\my_program\JavaScript\Node.js>node.exe example-storage.js 201 { name: 'test2', url: undefined, lastModified: undefined } 201 { name: 'test1', url: undefined, lastModified: undefined } 200 _________| listing existing containers |_________ [ { name: 'test1', url: 'https://normalianfeasibility.blob.core.windows.net/test1', lastModified: 'Tue, 23 Aug 2011 17:02:39 GMT' }, { name: 'test2', url: 'https://normalianfeasibility.blob.core.windows.net/test2', lastModified: 'Tue, 23 Aug 2011 17:02:40 GMT' } ]
実行結果から、無事ストレージサービスにコンテナ(test1、test2)が作成されていることがわかる。
次に、Cerebrata社 の Cloud Storage Studio を利用して Windows Azureストレージサービスに接続し、実際にストレージサービス側にコンテナが作成されえいるかを確認する。以下の様に test1、test2 フォルダが作成されていることが確認できる。
注意点!〜Compute Storageでは利用できない〜
waz-storage.js ライブラリを利用することで、Windows Azureストレージサービスの本番環境には接続可能だったが、ローカルの開発環境である Compute Storage への接続は現在サポートされていないので注意が必要だ。
実際に Compute Storage に接続しようとすると以下のエラーが発生する。
c:\node\lib\waz-blobs\service.js:31 var result = parser.parseString(response.body); ^ TypeError: Cannot read property 'body' of undefined at c:\node\lib\waz-blobs\service.js:31:43 at IncomingMessage.<anonymous> (c:\node\lib\waz-storage\core-service.js:152:4) at IncomingMessage.emit (events.js:88:20) at HTTPParser.onMessageComplete (http2.js:133:23) at CleartextStream.ondata (http2.js:1096:22) at CleartextStream._push (tls.js:328:27) at SecurePair.cycle (tls.js:617:20) at EncryptedStream.write (tls.js:121:13) at Socket.ondata (stream.js:36:26) at Socket.emit (events.js:67:17)