2012年11月20日火曜日

S3互換ストレージ用clientを作成してみた その2

前回に続き、今回はjavascript(node.js)でサンプルを作成します。

npmからamazon-s3-url-signerというものを見つけました。
(knoxというものもあったのですが、うまく動作させることができず断念しました。)
ポイントは、endpoint(host名の事)を任意のものに変更できる事です。任意のs3互換のストレージを指定できます。

まずはinstallから。
$sudo npm install amazon-s3-url-signer

key,secret key,host,bucket名などを渡すことで、URLを生成します。
下記はbucket内のobjectをリストするサンプルです。
var s3 = require('amazon-s3-url-signer');
var putUrl = s3.urlSigner('<key>','<secret key>', {
        host: '<host name>',
    }).getUrl('GET', '/', '<bucket>', 600);
console.log(putUrl);

上で出力されるURLをcurlなどで実行すればレスポンスを得る事ができます。
$curl "http://<host>/?Expires=1353454181&AWSAccessKeyId=<key>&Signature=<signature>"

結果、以下のようなAPIのレスポンスを得ることができます。
<?xml version="1.0" encoding="UTF-8"?><ListBucketResult><Name>testsnumano</Name><Prefix/><Marker/><MaxKeys>1000</MaxKeys><Delimiter>/</Delimiter><IsTruncated>false</IsTruncated><Contents><Key>CentOS-6.3-x86_64-LiveCD.iso</Key><Size>725614592</Size><LastModified>2012-11-18T08:52:52.000Z</LastModified><ETag>"9953ff1cc2ef31da89a0e1f993ee6335"</ETag><Owner><ID>b13accef9968b0ebbef4023cc8b9ddbf11970175f1e64727a39142c3cfc7acc5</ID><DisplayName>snumano</DisplayName></Owner></Contents></ListBucketResult>

これで、javascriptを用いたS3互換ストレージ用clientの目処は立ちました。
次は、いよいよ、Titanium Mobileを利用してiPhoneアプリ作りに挑戦です。
このエントリーをはてなブックマークに追加