はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

日本リージョンにAzure Mobile Servicesをデプロイする

Windows Azure – 技術者でつなぐ日めくりカレンダー の 2/27 の記事です。

 

Windows Azureの日本データセンタがオープンしました。

東日本と西日本の2か所でDRも組める、つまり、日本国内だけで完結する世界的なパブリッククラウドとなったわけです。

 

しかし、すべての機能が日本のデータセンタで提供されている訳ではありません。

http://www.windowsazure.com/en-us/regions/?fb=ja-jp#services

  東日本 西日本
Cloud Services
Mobile Services    
Virtual Machines
Web Sites
Active Directory
Cache
HDInsight    
Recovery Services    
SQL Database
Storage
BizTalk Servies    
Media Services  
Multi-Factor Authentication
Notification Hubs    
Scheduler    
Service Bus
Visual Studio Online    
ExpressRoute    
Traffic Manager
Virtual Network

 

残念ながら、Mobile Services、Notification Hubsなどは日本リージョンではまだ提供されていません。

 

そこで、ないのなら作るのが開発者ということで、

日本リージョンにMobile Services(らしきもの)を作ってみましょう。

 

とはいえ本当につくるとなると大変なのであるものを使って作れないか試してみたいと思います。

その「あるもの」とは……………………

 

バックエンドを.NETとしたときのMobile Serviceです。

 

バックエンドを「.NET」とした場合、WindowsストアアプリのサンプルプロジェクトをダウンロードするとWindowsストアアプリプロジェクトとASP.NET Web APIプロジェクトが含まれたソリューションが入手できます。

 

このASP.NET Web APIプロジェクトをデプロイするときは、管理ポータルの該当Mobile Serviceから発行プロファイルを入手してデプロイ先が該当Mobile Servieになるように調整します。

 

 

勘の良い人ならもうわかったと思います。

発行先をWebsitesにしちゃったら日本リージョンにこのASP.NET Web APIプロジェクトがデプロイできるかも。

 

ということで早速やってみましょう。

ソリューションエクスプローラASP.NET Web APIのプロジェクトを右クリックして[発行]メニューを選択します。すると[Webを発行]ダイアログが表示されます。

image

ここで[インポート]ボタンをクリックします。

 

[発行の設定のインポート]ダイアログがでます。

image

Webサイトが既にあればドロップダウンにでてきますが、なければ[新規]ボタンを押してWebサイトを作りましょう。

 

新規にWebサイトを作る場合、サイト名、場所、データベースサーバーなどが選択できます。

image

サイト名は、Mobile Serviceと同じ「dotNETBackend」にしてみましょう。もちろん、後半は「azure-mobile.net」ではなく「azurewebsites.net」になるので、(運よく誰もWebサイトで使ってなければ)Mobile Serviceのサブドメインと同じ名前は付けられます。

また、Mobile Serviceの場合、サイトとデータベースサーバーは同じ場所である必要がありましたが、Webサイトであればデータベースサーバーは別の場所でもOKなので、Webサイトは東日本にしておいて、データベースサーバーはMobile Serviceを作成した時に指定した(今回の例では東アジア)データベースサーバーを指定してみましょう。

 

これで、Mobile Serviesとは別の発行プロファイルができあがりました。

image

 

この発行プロファイルを使って発行を行えば、URLはWebsitesなのに表示はMobile Servieという画面が表示されます。

image

 

この時、指定したデータベースサーバーには既存データベースとは別に「dotNETBackend859」というデータベース作成されて、そこに接続するように設定されます。

 

次に、ストアアプリのApp.xaml.csの中にある接続先設定を「https://dotnetbackend.azure-mobile.net/」から「http://dotnetbackend.azurewebsites.net/」に変更してから実行してみます。

 

残念ながらうまく動きませんでした。

image

どうやらアクセス権のようですが、どうやって解決しましょ。

 

そこでふと気になったのがASP.NET Web APIプロジェクトのWeb.configにある次の2行です。

    <add key="MS_MasterKey" value="Overriden by portal settings" />
    <add key="MS_ApplicationKey" value="Overriden by portal settings" />

つまり管理ポータルにこの2行で定義されているKeyを定義し、Mobile Serviceにあるキー値を設定してあげたらいいのではないかと。

image

 

この設定をしてから、ストアアプリから実行すると……

image

 

無事動かすことに成功しました!

まとめ
  1. バックエンドが.NETのAzure Mobile Serviceを作成する
  2. サンプルプログラムをダウンロードする
  3. サンプルのASP.NET Web APIプロジェクトの発行先を変更する
  4. 管理ポータルのWebサイトの構成で、マスターキーとアプリケーションキーを設定する
  5. WindowsストアアプリのApp.xaml.csで接続先をWebサイトのURLに切り替える

 

それでは!

#このエントリは「Windows Azure アドベントカレンダー」への参加エントリです。