Windows Azure Blobストレージ
プログラムレスでWindows Azure Blobストレージを利用する
SQL Azureは8月中旬よりトライアルが開始されたサービスですが、Windows Azureのストレージ・サービスは昨年末よりトライアル運用が開始されており、既にこれに対応したオープンソースのツールが多数提供されています。
これらを利用することでVisual StudioあるいはPHPなどのプログラム言語で特別なコードを書くことなしにイメージファイルをストレージに格納することができます。代表的なものを2つ紹介します
□SpaceBlock(http://www.codeplex.com/spaceblock)
Windows Azure Storage以外のCloud Storageにも対応
□Azure Storage Explorer(http://azurestorageexplorer.codeplex.com/)
Windows Azure StorageのBlob、Table、Queueに対応
これらのGUIツールを使うことで「クラウド」を特別に意識することなくファイル操作が可能ですが、ストレージの構造は理解しておく必要があります。Windows Azure Blobでは、まずContainer(フォルダのようなもの)を作成し、その中にファイルを格納していきます。
図2-1はSpaceBlockでContainerを作成後、そこに複数ファイルを一括でuploadしている様子です。
図の左上がローカルマシンのフォルダ構成で、右上が実際の転送対象に選択されたファイル一覧です。右クリックでメニューを開き「Transfer」します。
また図の左下がWindows Azure Blobに作成したContainerで、右下がContainerに格納済みのファイル一覧となります。 Containerの中にさらにContainerを作成するようなことはできませんが、ファイル名に“/”を入れることで1つのContainerの中を階層構造のようにあらわすことができます。
ただし「Container名、ファイル名ともにURLの一部となる」ことから利用できる文字には制限があり注意が必要です(次回で解説)。GUIツールを使うと普通のファイルサーバーへのftp操作のように思ってしまいますが、Windows Azureというクラウド上のファイルシステムであることを忘れないようにしましょう。
なお、SpaceBlockでWindows Azure Storageへ接続する際には「アカウント名」と「Access Key」が必要となります。これはメニューのTools-- > Optionにて設定します。
Blobストレージには1つあたり最大50GBのオブジェクトを格納することができ、画像ファイル以外にも音声、動画等のファイルを保存することができます。ただし64MBを越える場合、ブロックインターフェースの利用が必要です[※1]。
Windows Azure Blobストレージに登録した画像ファイルの共有
Windows Azure Blobに格納したファイルは、指定のURLにてインターネット上に公開する仕組みがあらかじめ用意されています。共有設定はContainer単位で共有ポリシーにより行います。Containerの共有ポリシーが共有に設定されている場合、次のURL経由でアクセスすることができます。
http://アカウント名. blob.core.windows.net/Container名/ファイル名
Containerの共有ポリシー設定はPHPなどのプログラムにより設定しますが、先ほどのSpaceBlockも利用できます。
図2-1の左下から該当するContainerを選択し、右クリックでメニューを開き、「Edit Azure Container Access」を選択し、表示された画面の「Allow Public Access?」をチェック(Allow)します(チェックしていないContainer 内のファイルの参照にはAccess Keyを使用したプログラムの利用が必要) 。
こうして共有したファイルはブラウザで参照することができますが、それ以外にもオープンソースのアプリケーションで利用することもできます。Azure Storage Explorerはファイル操作と同時に画像ファイルの内容を確認することができます。
また、WP Silverlight Media Playerプラグイン[※2]を利用することで、wmv形式の動画ファイルをWordPress上で再生することができます。なお、Containerが共有設定されていない場合、このプラグインでは動画を再生の際”Unable to load media”エラーとなります。
共有ポリシーの設定によりContainer単位で共有設定をすぐに変更することができ、使い方によってはとても便利な機能ですが、筆者はContainerを作成しただけで共有設定を忘れていて「“Silverlight ErrorCode:4001エラー”」でなぜ表示できないのかしばらく悩んでいたこともあります。