UnityからAzure Blobにアップロード/ダウンロードする

Azure Blob Storageとは

UnityからAzure Blob Storageにアクセスしてファイルをダウンロード&アップロードする方法を調査しました。

Azure Blob Storageは、このブログの画像をアップして配信するのにも使っていますが、堅牢で使いやすい割に価格が安くとても助かっています。

Blob Storageの作成には、Azure Portalにログインして、「ストレージアカウントの作成 > Blobコンテナの作成」の順で行います。1つのストレージアカウントの配下に、Blob,Table,Quere,Fileの各ストレージが紐づくイメージです。
画像やPDFなど汎用的なファイルを格納するのに便利なのがBlobストレージになります。
画像付きの手順は下記をご覧ください。

今回は小技ネタです。仕事などでお客様に資料を送付する際、容量の大きいファイルの共有には困っちゃいますよね。一応日本の社会人としての礼儀作法的にはメールの添付サイズの要領の上限は以下のように言われてい…
Unity用のSDKのダウンロードと設定

Unity用のSDKは下記からダウンロードできます。

Azure Storage SDK for Unity

「This is a Sandbox project.」と書いてある通り正式版のSDKでは無いらしいのですが、動作は問題なさそうです。
というか、「Azure Storage for Gaming」と謳うくらいなのだから、ちゃんと正式版のSDKを出してほしいですね。

画面の少し下の「.unitypackage」と書いてあるリンクからパッケージがダウンロードできます。
Unity 2018.1,2,3に対応しているそうですが、今回は2018.4LTSで試しています。
また、API Compatibility Levelを「.NET Standard 2.0」にする必要があります。

さて、Unityにインポートしてみると、いきなりエラーが出ています。

仕方がないのでAssets > Plugins > Microsoft.CSharp.dll を削除したら解消しました(いいのかな?)

サンプルの実行

Assets > AzureSamples > WindowsAzure.Storage > AzureStorageシーンを開いて、StorageObjectのインスペクタに、作成したストレージアカウントの接続文字列を入力します。

接続文字列は、Azure Portalのストレージアカウントの「アクセス キー」から確認することができます。
Key1、Key2とありますが、どちらでも構いません。(「キー」ではなく「接続文字列」を使用します)

設定後、Playして、「Blob Storage」のボタンをクリックしてエラーが発生しなければうまくいっています。

Azure Blobからダウンロードした画像を表示する

できるだけシンプルになるように下記のスクリプトを作って、Azure Blobからのダウンロードとアップロードを確認してみました。(単純にするためにUWPのコードは入れていません)
Connection StringとcontainerNameは自身で作成したものを入力してください。

ファイルを取得するのは、GetFileメソッドで行っています。
StreamingAssetPathにファイルをダウンロードして、そのファイルをbyte列に変換して返却し、テクスチャに変換してインスペクタで設定するGameObjectに設定することで表示しています。

上記ではコンテナ直下のファイルを指定していますが、

CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);

のところで、fileNameにパス付きのものを指定すれば、フォルダ内のファイルも取得できました。

Azure Blobにファイルをアップロードする

Sキーを押すとスクリーンショットを録ってBlobにアップロードするようになっています。
(あらかじめStreamingAssetsフォルダの下にScreenShotsフォルダを作成しておく必要があります)

PutFileメソッドがアップロードを行っていますが、ここでも

CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);

のところでパス付きのfileNameを指定することができるので、そうするとBlobではフォルダに入った状態で格納されます。

なお、Azure Storage Explorerを使うと、上のようにStorageの中身が簡単に見れて便利です。

簡単なサンプルですが、SDKのお陰でBlobへのアクセスができました。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク