8)Querying for existing record by rowkey and partitionkey returns empty
- 質問:
テーブルでクエリを発行した際に、テーブル上にエンティティが存在するのにemptyで返ってくるのはなぜですか?[上級][デバッグ]
- 回答:
原因追求のためにFiddlerを使うことをお勧めします。
- 解説:
結局このスレッドでは問題が解決していないようです。ですが、Fiddlerをストレージサービスを使用した開発で活用するノウハウが紹介されていて今後のためになりました。
FiddlerとはHTTPの通信内容をモニタしてデバッグするためのツールですが、Azureでも有効活用できます。なぜならストレージサービスはREST形式でアクセスする仕組みとなっていてストレージAPIも実際はREST形式に変換されてHTTPメソッドを使用してアクセスする仕組みだからです。そのため、通信をモニタするツールが重要となりFiddlerのようなWebデバッギングツールが必要になるのです。
なお、Development Storage(ローカルでの開発環境)を使う場合に、Fiddlerはローカルの通信はモニタリングしないため、設定が必要になります。CloudStorageAccount.Parse("DataConnectionString")としているところを"UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://ipv4.fiddler"に書き換える必要があります。
具体的には次のようなコードになります。
var account = CloudStorageAccount.Parse( "UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://ipv4.fiddler"); var blobClient = account.CreateCloudBlobClient(); var queueClient = account.CreateCloudQueueClient();
実際に使用した結果は以下になります。Development Storageへのアクセスをモニタしている様子が分かります。
9)Cloud App URL without prefix
- 質問:
Windows AzureでWebアプリを公開する際のURLがxxxx.cloudapp.netになりますが、それ以外の独自ドメインを指定したい場合はどうすればよいでしょうか。[初級][管理]
- 回答:
DNSでCNAMEを使用して別名をつければ指定できます。
- 解説:
Windows AzureでWebアプリを公開する場合ホスティングサービスを作成して公開しますが、作成時にサービスのURLを指定しなければいけません。このホスト名は末尾がcloudapp.netになるため自前のアプリケーションのホストとして使用したい場合に窮屈です。その場合、ドメインサービス会社等で独自ドメインを取得してCNAMEの設定を行うことで、あたかも自前のサービスのようにサービスを公開できます。日本のドメインサービス各社ではWeb上からGUIで設定できるようになっている場合が多いため、具体的な設定については各社のサイトを確認してください。
例えばYahoo!ドメインの場合は次を参照して設定してください。
http://domains.yahoo.co.jp/guide/acnamerecord
10)TableServices / BLOB Services storage architecture
- 質問:
ストレージサービスのデータはどのように配置されているのでしょうか?メモリ上でしょうか。それとも固定ディスクストレージでしょうか。[初級][仕様]
- 回答:
ストレージサービスではデータはメモリーではなくディスク上に最低3つの複製を持って配置されるためデータの消失がありません。
- 解説:
ストレージサービスでは最低で3台のマシン上にデータを複製して配置しているようです。複数のマシンに分けることによりデータの消失リスクを最小限に抑えているようです。SLAでもコンピュートサービスなどのダウンタイムについて記載されていますが、データ消失については一切記載されていない(実際はリスクがあったとしても営業上の理由で書けないと思いますが)ため、データの保存は安心できると思われます。