こんにちは!4月に入社したばかりのAWSチームの新人こと年寄りザビオです!
Dynamoが東京にきて、マイスターシリーズでも取り上げられましたが皆さん使ってますか?
node.jsからDynamoを操作するクライアントを見つけましたのでご紹介します!
先に注意しておきますが、私はワイルドとは全く無縁の関係でございます。改めてご認識ください。
今回利用したAMIは(amzn-ami-pv-2012.03.1.x86_64-ebs (ami-e47acbe5))です。
まずはnode.jsに必要な環境構築を行います。
yum install openssl-devel yum install gcc-c++ yum install make
その後、最新のnode.jsをインストールし、展開します。
現在の最新バージョンはv0.6.15でした。
wget http://nodejs.org/dist/latest/node-v0.6.15.tar.gz tar -zxvf node-v0.6.15.tar.gz ./configure make make install
インストールが終わったら「node -v」でバージョン表示されることを確認してください。
インストールが終わっていてバージョン確認できない場合はPATHが通っていないのでPATHを通してください。
自分の場合はtmpにてファイルダウンロードをしたので、シンボリックリンクを下記のように貼りました。
ln -s /tmp/node-v0.6.15/out/Release/node /usr/sbin/node
つぎに「npm」をインストールします。
npmはPHPのPEAR的なもので、いろんなモジュール(フレームワークも)簡単にインストールできます。
curl http://npmjs.org/install.sh | sh
インストールが終わったら、いよいよクライアントツール「dynode」をインストールします。
npm install dynode
これだけでインストールできます。 このままでも利用できますが、regionが「East」のままなので、「Tokyo」にしましょう。
編集ファイルは下記ファイルです。
- /node_modules/dynode/lib/dynode/request.js
編集箇所は13行目です。
var http = require("http"), _ = require("underscore"), signer = require('./request-signer'), AmazonError = require('./amazon-error'), URL = require('url'), STS = require('./sts').STS; var Request = exports.Request = function Request(config) { this.sts = new STS(config); this.config = _.defaults(config, { prefix : "DynamoDB_20111205.", host : "dynamodb.us-east-1.amazonaws.com"←(編集前) host : "dynamodb.ap-northeast-1.amazonaws.com"←(編集後) });
実際にDynamoDBにテーブルを作成してみましょう。
- vi zabbio.js
var dynode = require('dynode'); dynode.auth({accessKeyId: "***", secretAccessKey: "***"}); var opts = {read: 5, write: 5, hash: {wild: String}, range: {percentage: Number}}; dynode.createTable("zabbio", opts, console.log);
詳細につきましては本家のreadmeに記載がございます。
本家のサイト
それでは実行してみます。
- node zabbio.js
実行後、下記のメッセージがかえってきました。
null { TableDescription: { CreationDateTime: ****, KeySchema: { HashKeyElement: [Object], RangeKeyElement: [Object] }, ProvisionedThroughput: { ReadCapacityUnits: 5, WriteCapacityUnits: 5 }, TableName: 'zabbio', TableStatus: 'CREATING' } }
Management Consoleを見てみると、
確かにできていますねー。
node.js(SocketStream)を触る機会が多く、本ライブラリを使用していますが
めちゃめちゃ使い勝手良く重宝しています。
次回(要望があればw)は作成したnodejsの利用例など紹介できればいいなと思います。
他にもたくさんのライブラリがあるようです。こちらの方も合わせてご確認ください!
Amazon Web Services ブログ