« 週刊AWS - 2013年4月29日 | メイン | 【AWS発表】 EBS プロビジョンドIOPSが最大4,000 IOPSまで指定可能に。AWS Marketplaceもサポート »

【AWS発表】 Node.js用のAWS SDKが一般提供開始!

AWS SDK for Node.jsが正式版の一般提供 (GA) を開始いたしました。 これに伴いまして、npmを使って、aws-sdkとしてインストールすることができるようになっています。 これまでAWS SDK for Node.jsには、プレビューリリースされてから、Bound parametersStreamsIAMロール for EC2インスタンスVersion lockingProxiesなどの多くの機能を追加してきました。

ここでは、Bound ParameterとStreamについて、いくつかの例と共にご紹介いたします。

Bound Parameter
任意のサービスオブジェクトのコンストラクタにパラメータを渡すことができる機能です。 これらのパラメータはコール毎に賢くリクエストパラメータにマージされます。 これにより、特定のリソースにバインドされたサービスオブジェクトを簡単に作成することができるようになります。 次の例では、Amazon S3オブジェクトを作成し、バケットとキーをバインドしています。

obj = new AWS.S3({ params: { Bucket: 'bucket-name', Key: 'object-key' })

obj.headObject(function (err, data) {
	// no request params required
});

obj.putObject({ body: 'data' }, function (err, data) {
	// merges body param with Bucket and Key
});

Stream
createReadStream()メソッドを使うと、生のHTTPのBodyデータをファイルへパイプするサポートを行う、streamオブジェクトのハンドルを取得することができます。 これはファイルシステムオブジェクトのようなものをstreamする際に特に便利です。 次の例では、Amazon S3から直接ディスク上のファイルへオブジェクトをstremaしています。

var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};
var file = require('fs').createWriteStream('/path/to/file.jpg');
s3.getObject(params).createReadStream().pipe(file);

他の方法として、ワイヤー(バッファオブジェクトなど)全体で受けとられたデータの各チャンクにアクセスするために、リクエストオブジェクトに'httpData'イベントリスナーを登録することもできます。

var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};
var file = require('fs').createWriteStream('/path/to/file.jpg');

s3.getObject(params).
    on('httpData', function(chunk) { file.write(chunk); }).
    on('httpDone', function() { file.end(); }).
    send();

その他の例については、Getting Started Guideをご覧ください。

リソース

ご利用にあたり参考になるリソースを以下にまとめていますのでご参考ください。

堀内康弘 (Facebook, Twitter)

 

コメント

トラックバック

この記事のトラックバックURL:
http://www.typepad.com/services/trackback/6a00d8341c534853ef019101d970c1970c

【AWS発表】 Node.js用のAWS SDKが一般提供開始!を参照しているブログ:

Featured Event

Brought to You By

玉川憲 (@KenTamagawa)


2014年10 月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31