2011年7月19日火曜日

S3ってなんじゃ?(BitTorrent編)

今回はS3のおもしろい機能を使ってみます。
S3はデフォルトとしてHTTPプロトコルでファイルのサーブを行っていますが、BitTorrentプロトコルもサポートしています。

通常、BitTorrentはトレントファイル(*.torrentという拡張子で、トラッカーサーバーの情報だけを保持しているごく軽量のファイル)をトレントファイル配布サイト(インデックスサイト)からダウンロードし、そのファイルを元にBitTorrentクライアントソフトを使用して本体ファイルを持っているピア(シーダー)とP2P接続を行います。

ここでは、S3をBitTorrentのインデックスサイト兼シーダーとして利用してみます。

まず、S3のコンソール画面で「Upload」ボタンをクリックして、配布したい本体ファイルをS3にアップロードします。


アップロードしたファイルで右クリックのメニューから「Properties」を選び、「Permission」タブで「Everyone」の「Open/Download」を有効にし、ファイルを一般に公開します。

ここまでは、通常のS3の公開と同様の手順です。
以上でサーバー側の準備は完了です。
実は、これだけでBitTorrentの設定等は特に必要ありません。

それでは、クライアント側でダウンロードしてみます。
今回はMacのTransmissionを利用してみます。


右クリックメニューから「Open Torrent Address ...」を選択し、アドレスを入力します。
ここにはトレントファイルのURLを入力するのですが、S3のURLの後ろに?torrentを追加したものを入力するだけです。


例えば、S3のURLが
http://s3-ap-northeast-1.amazonaws.com/mount-test/Stardust.m4v
の場合
http://s3-ap-northeast-1.amazonaws.com/mount-test/Stardust.m4v?torrent
とするだけでS3からトレントファイルを取得できます。
実際にブラウザで上記URLにアクセスすると
ファイル名.torrent
というトレントファイルがダウンロードできるはずです。
トレントファイルのURLを直接入力できないクライアントソフトは、ブラウザでトレントファイルをダウンロードしてから、torrentクライアントソフトでそのファイルを開いて利用してください。

すると、構成ファイルも正常に表示され、ダウンロードを開始すると
下記のように正常にダウンロードが行われていることがわかります。
 ダウンロードしたファイル(今回はm4vファイル)も正常に再生できました。
このように、S3には最初のシーダーとなるだけではなく、自動的にトレントファイルを生成してくれるので、S3側ではなにもしなくてもBitTorrentのインデックスサイトになることができます。

一次ファイルの配布としてはHTTPダウンロードと大差はないかと思いますが、S3からBitTorrent形式で配布する利点はいくつかあります。
例えば最終的に不特定多数のユーザーにファイルを配布したいが、通信速度はそこまででなくてもよい場合や、S3の帯域や利用料金を節約したい場合などです。

しばらくの間S3でファイルをpublic-readで公開して、?torrentでトレントファイルを予めダウンロードしたものをホストサーバーにおき、それをトレントファイルとして公開しておきます。S3の高速な帯域でスムーズに一次配布をしておき、十分にスウォーム(同じトレントファイルでファイル共有ができたクライアントのグループ)が成長した段階でS3の公開を閉じることで、それ以降はS3の帯域を全く使わずにクライアント間のP2Pアクセスだけでファイルの配布を行うことができます。

コンテンツやサイトの内容によっては選択肢として考慮するだけの価値があるかもしれません。

今日はここまで。