Upload
kana-suzuki
View
23.328
Download
3
Embed Size (px)
Citation preview
JAZUG 部 勮会#2ハンズオン手順書
ハンズオンの前に…
この手順書は初心者の方向けに作っていますが、もしもわからないことや困ったことがあったら、お気軽に周りの人に声をかけてみてくださいね。もちろんスタッフに声をかけていただいてもOKです。できる限りサポートします!
このハンズオン手順書は以下の環境で作っています。
★ Visual Studio 2010 Professional Edition★ Visual Studio 2010 SP1★ Azure Storage Explorer☆ Windows Azure SDK for .NET -2011 11月☆ Windows Azure Tools 言語パック -2011 11月☆ Windows Azure Libraries for .NET 1.6 -November 2011
Visual Studio 2010は なるエディションまたは無償のVisual Web Developer 2010 Expressでも構いません。
☆のものはMicrosoft Web Platform Installerからインストールしました。
Windows Azure Libraries for .NET 1.6 -November 2011 は用していないため、インストールしなくても構いません。
手順 1. 事前準備として、Azure側にストレージの設定を追加しましょう。
ブラウザからWindows Azure ポータル(https://windows.azure.com/default.aspx)に接続します。
左下の[ホステッド サービス、ストレージ アカウント、CDN]を選択し、左中央の[ストレージアカウント]を選択します。その上で、[新規ストレージアカウント]をクリックします。
Azureを使ってみよう!ハンズオン手順(1/16)
[ストレージアカウントの新規作成]ダイアログでURLと地域を設定(設定値はどちらも任意)し、[OK]ボタンをクリックします。
URLに指定する値がストレージアカウントの名前になるワ。URLだから一意性を保つ必要があるので気をつけテネ。地域はどこでも いけれど、アクセス場所
から近いところを選ぶことが多いカナ。ちなみに東南アジアだとシンガポール、
東アジアだと香港のDCネ!
ストレージアカウントの作成
Point
3
Azureを使ってみよう!ハンズオン手順(2/16)
手順 2. 開発ツールのVisual Studioを 者として実 しましょう。
[スタート]ボタン-[すべてのプログラム]-[Microsoft Visual Studio2010]を選択して、[Microsoft Visual Studio 2010]のアイコンを右クリックします。
コンテキストメニューから[ 者として実 ]を選択します。
3. Windows Azureプロジェクトを作成しましょう。
[ファイル]-[新規作成]-[プロジェクト]を選択します。
Visual Studioの起動Point
Visual Studioは 者 ードで起動してネ!
者 ードで起動しないと、デバッグのときにエミュレータを起動できなくなっちゃうノ。
[新しいプロジェクト]ダイアログで以下を設定(または選択)しますテンプレート :[Visual C#]-[Cloud]-[Windows Azureプロジェクト]
名前 :HelloWindowsAzureProject場所 :任意の場所(デスクトップなど)
設定後、[OK]ボタンをクリックします。
プロジェクトの選択Point
今、作っている『Windows Azure プロジェクト』というのが、デバッグ時のエミュレータの起動や、Azureにデプロイするためのパッケージングをしてくれるノヨ。
4
手順 4. Webロールを1つ追加しましょう。
[新しいWindowsAzureプロジェクト]ダイアログから[ASP.NET Webロール]を追加し、名前を変 します。
名前:SampleWebRole
追加後、[OK]ボタンをクリックします(少し時間がかかります)。
5. 右上のソリューションエクスプローラーを確認しましょう(作業はありません)。
鉛筆のアイコンをクリックすることで名前が編集できます
Azureを使ってみよう!ハンズオン手順(3/16)
AzureにデプロイするのはSampleWebRoleネ。
でも、このままデプロイせずパッケージ(圧縮ファイル)にする必要があるノ。パッケージ
作成のために必要なのがHelloWindows
AzureProjectということネ!
ここまでのまとめ
5
手順 6. 作成したWebロールのUIを編集しましょう。
ソリューションエクスプローラーで[SampleWebRole]-[Default.aspx]をダブルクリックします。
[ツールボックス]からFileUploadコントロールをドラッグアンドドロップします。(FileUploadコントロールなどの各部品の配置はあまり気にしなくてOK!)
[デザイン]をクリックすると既存の
UIが確認できます
Azureを使ってみよう!ハンズオン手順(4/16)
上図の作業と同様に、LabelコントロールとButtonコントロールをドラッグアンドドロップで追加します。(Labelコントロールの配置前にEnterキーで すると いですよ!)
表面の文字(Textプロパティの値)設定は
任意です!
6
手順 7. アプリからストレージを 用するための設定をしましょう。
ソリューションエクスプローラーで[HelloWindowsAzureProject]-[ロール]-[SampleWebRole]をダブルクリックします。
ロールの設定画面で、[設定]タブを選択し、[設定の追加]ボタンをクリックします。追加した に以下の設定をします。
名前:StorageConnectionString種類:接続文字
設定後、[参照]ボタンをクリックします。
Azureを使ってみよう!ハンズオン手順(5/16)
[ストレージアカウント接続文字 ]ダイアログを表示します(操作は後です)。
参照ボタン
ストレージに接続するには、アカウント名とキーが必要ネ。これらはロールの設定値として保存しておくとデプロイ後も
変 できるから ヨ!
ストレージへの接続Point
7
手順 8. Azure側で使うストレージの設定を確認しましょう。
ブラウザからWindows Azure ポータル(https://windows.azure.com/default.aspx)に接続します。
左下の[ホステッド サービス、ストレージ アカウント、CDN]を選択し、左中央の[ストレージアカウント]を選択します。
ストレージアカウント名を確認した上で、[プロパティ]-[プライマリアクセスキー]の[表示]ボタンをクリックします。
Azureを使ってみよう!ハンズオン手順(6/16)
アカウント名はココ!(プロパティでも確認
できます)
[ストレージアクセスキーの表示]ダイアログからアクセスキーをコピーし、[閉じる]ボタンをクリックします。
クリックすることでキーをコピーします
2つのアクセスキーPointストレージアクセスキーはどちらを使っても問題ないワ。通常は片方だけを使い続けて、キーの えいなどの 常時にもう片方を使うこともあるソウヨ。そして、 えいしてしまった方のキーを再生成することで えいに対 することができるノヨ。
8
手順 9. 手順8で確認したストレージ名とアクセスキーを設定しましょう。
Visual Studioの[ストレージアカウント接続文字 ]ダイアログで[ストレージアカウントの 格情報の入 ]を選択し、アカウント名とキーを入 します。[既定のHTTPSエンドポイントの使用]が選択されていることを確認し、[OK]ボタンをクリックします。
10. 設定値が保存されていることを確認しましょう(作業はありません)。
ソリューションエクスプローラーから[HelloWindows AzureProject]-[ServiceConfigration.Cloud.cscfg]をダブルクリックします。
Azureを使ってみよう!ハンズオン手順(7/16)
手順8で確認したアカウント名を入 !
11. 上書き保存しておきましょう!
[すべてを保存]ボタンをクリックします。
HelloWindowsAzureProjectAzureにデプロイするためのパッケージを作ったりするプロジェクト。パッケージングすると、.cspkgファイルと.cscfgができる(つまり上図のcscfgファイルはデプロイ後でも変 可能なファイルってコト)。ストレージにアクセスするために必要な情報は、今ココに格納してるワ!
SampleWebRoleAzureにデプロイするWebRoleのUIやコードを含めたプロジェクト。ストレージにアクセスするためのコードはまだ書いていないワネ。
ここまでのまとめ
9
手順 12. アップロード用ボタンをクリック時のイベントハンドラを作成しましょう。
Default.aspxを開き、アップロード用ボタンをダブルクリックします。
Default.aspx.csが開いたら、コードをすべて消して以下のテキストファイルに置き換えて、上書き保存します。
ファイルの場所 :デスクトップファイル名 :Default.aspx.cs.txt
Using…も含めてすべて消しちゃって
OK!
Azureを使ってみよう!ハンズオン手順(8/16)
次のページには、上記手順で張り付けたコードが載っています。すべてを読んで 解する必要はありませんが、 などでもう一本ハンズオンを試したり、Blobを扱うコード を確認したりする際の参考にしてくださいね!
10
1. using System;2. using System.Collections.Generic;3. using System.Linq;4. using System.Web;5. using System.Web.UI;6. using System.Web.UI.WebControls;7. using Microsoft.WindowsAzure;8. using Microsoft.WindowsAzure.StorageClient; 9. using Microsoft.WindowsAzure.ServiceRuntime;10.11. namespace SampleWebRole12. {13. public partial class _Default : System.Web.UI.Page14. {15. protected void Page_Load(object sender, EventArgs e)16. {17. }18.19. protected void Button1_Click(object sender, EventArgs e)20. {21. // 画像ファイルが指定されているどうかを判定22. if (FileUpload1.HasFile)23. {24. //cscfgファイルからストレージのアカウント情報を取得する25. string connectionString =RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString");26. CloudStorageAccount account = CloudStorageAccount.Parse(connectionString);27.28. //Blobストレージクライアントの生成29. CloudBlobClient blobClient = account.CreateCloudBlobClient();30.31. //リトライポリシーの設定32. blobClient.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromMilliseconds(500));33.34. //ブロブコンテナの取得、コンテナが存在しない場合は作成35. CloudBlobContainer blobContainer = blobClient.GetContainerReference("sampics");
☆手順12 で貼り付けたコードの紹介(読めなくてもOK!)
26 目のコードで.cscfgに格納した値を取得しているノヨ。StorageConnectionStringってのは手順6で設定した名前ネ。
26 目の右Point
35. CloudBlobContainer blobContainer = blobClient.GetContainerReference("sampics");36. blobContainer.CreateIfNotExist();37.38. //ブロブへの参照取得39. CloudBlockBlob blob = blobContainer.GetBlockBlobReference(FileUpload1.FileName);40.41. //ファイルのアップロード42. blob.UploadFromStream(FileUpload1.FileContent);43.44. //メタデータの設定45. blob.Metadata.Add("Name", HttpUtility.UrlEncode(FileUpload1.FileName));46. blob.SetMetadata();47.48. Label1.Text = "アップロードが しました";49.50. }51. else52. {53.54. Label1.Text = "画像が指定されていません";55. return;56. }57.58. }59. }60. }
ブロブを扱うコードPoint
アカウントCloudStorageAccount
コンテナCloudBlouContainer
ブロブCloudBlob
CloudBlobClient
ブロブの とこれを表現するクラスは上図のような関係になっているワ。上のソースコードを読むときの参考にしてネ!
11
手順 13. 作成したアプリをエミュレーター上で実 しましょう。
[デバッグ]-[デバッグ開始]をクリックします。
ブラウザが起動します。何か画像ファイルをアップロードしてみましょう!(アップロードできたかどうか後で確認します。ここではアップロード用ボタンを押下して、 アップロードが しました の文字が表示されればOKとしてください)
Azureを使ってみよう!ハンズオン手順(9/16)
まだAzureにデプロイしていないから、作ったWebRoleのアプリケーションはエミュレータ上で動いているワ。でも、ストレージはエミュレータではなくAzure上のものを使っているノ。
順を追っていくと、デバッグ開始をクリックすると、パッケージングされてローカルマシンのエミュレータ上に配置されて、その後ブラウザが ちあがってアプリを動かしたわネ。アップロード用ボタンをクリックすることで、.cscfgにあるストレージ名やキーを取得して、実際のAzureストレージ上に画像をアップロードしてたってコト!OK?
ここまでのまとめ
12
手順 14. Azure上にデプロイするためのパッケージングをしましょう。
ソリューションエクスプローラーで[HelloWindowsAzureProject]-[ロール]-[SampleWebRole]をダブルクリックします。[構成]タブ内の[診断を有効にする]のチェックを外します。
Azureを使ってみよう!ハンズオン手順(10/16)
Windows Azureの診断機能PointWindows Azureには診断機能があるノ。この診
断機能が各種ログの収集作業をしてくれているのネ。診断機能が収集したログを各ロールのローカルストレージに蓄積して、最終的にはローカルストレージに転送する仕組みになっているノ。
デフォルトの設定だと、Azureのデプロイ時にログの が実際のAzureストレージに
り わって、ストレージへの書き みが発生するので、今回は診断機能をOffにするノ!
• ローカルストレージはインスタンスごとに存在する
• ロール再起動時などに初期化される可能性がある
転送
Webロール
Azure ストレージ
ブロブ テーブル
• 数のロールで したログをマージして保存できる
• 転送したログに永続性がある
トラブル発生時にはとっても心勮い診断機能だけれど、意 して使わないと…
知らないうちにAzureストレージへのトランザクションが発生↓
使用 ージを てびっくり!↓
ストレージ使ってないはずなのに…と がわからず対 できず↓
ついに無 の上限に してしまったり、次回以 もいつの間にか使用 が増えちゃうの…?とびくびくしちゃったり(ただし、無 を使い ってもインスタンスが削除されるだけで、
手に はされませんのでご勣心を!)
13
手順 14. Azure上にデプロイするためのパッケージングをしましょう(続き)。
ソリューションエクスプローラーで[HelloWindowsAzureProject]を選択して、右クリックします。コンテキストメニューから[パッケージ]をクリックします。
[Windows Azureアプリケーションのパッケージ化]ダイアログで、そのまま[パッケージ]ボタンをクリックします。
Azureを使ってみよう!ハンズオン手順(11/16)
しばらく待つと.cspkgファイルと.cscfgファイルが格納されたフォルダが開きます。
パッケージングとデプロイ
Point
今回のハンズオンではパッケージングとデプロイを2段階に分けているけれど、[発 ]メニューから一 で うこともできるのヨ。別の機会にでも
試してみテネ。感動すること間違いなしヨ!
14
手順 15. 作成したファイルをデプロイしましょう。
ブラウザからWindows Azure ポータル(https://windows.azure.com/default.aspx)に接続します。
左下の[ホステッド サービス、ストレージ アカウント、CDN]を選択し、左中央の[ホステッドサービス]を選択します。その上で、[新規ホステッドサービス]をクリックします。
[ホステッドサービスの新規作成]ダイアログに以下の値を設定し、[OK]ボタンをクリックします。
サービスの名前: HandsOnAppサービスのURL: (任意の値)
Azureを使ってみよう!ハンズオン手順(12/16)
サービスの名前: HandsOnAppサービスのURL: (任意の値)デプロイ名: HandsOn_V1地域: (任意の地域)パッケージの場所: .cspkgへのパス構成ファイル: .cscfgへのパス
インスタンス数が1つであることの警告ダイアログに対し、[はい]ボタンをクリックします。
1つのホステッドサービスに運用環境とステージング環境とがあるノ。運用環境はその名の通り運用で使う環境ネ。ステージング環境はテスト環境で使ったり
次期バージョンを配置してスタンバイさせたりするワ。
デプロイオプションPoint
15
手順 15. 作成したファイルをデプロイしましょう(続き)。
が準備 になるまで待機します。DNS名をクリックし、簡単な動作確認をします。
[VIPのスワップ]をクリックし、ステージング環境と本 環境の り えをします。
Azureを使ってみよう!ハンズオン手順(13/16)
[VIPスワップ]ダイアログに対し[OK]ボタンをクリックして、再 が準備 になるまで待機します。
これで作業はおしまいヨ!本当に画像がアップロードされたか たいところだけど、
ながら ポータルではブロブの は れないノ。だから、次の手順でツールを使った確認をシマショ!
ここまでのまとめ
16
手順 16. Azure Storage Explorerを起動しましょう。
[スタート]ボタン-[すべてのプログラム]-[Neudesic]-[Azure Storage Explorer]をクリックします。
[Welcome!]ダイアログの左のボタンをクリックし、ダイアログを閉じます。
Azureを使ってみよう!ハンズオン手順(14/16)
[Add Account]ボタンをクリックし、アカウント情報を入 するためのダイアログを表示します。
17
手順 16. Azure Storage Explorerを起動しましょう(続き)。
手順8で確認したストレージアカウント名とキーを入 し、[Use HTTPS]にチェックを入れます。設定後、[Add Storage Accont]ボタンをクリックします。
初回アクセス時の注意点のダイアログに対し、[OK]ボタンをクリックします。
Azureを使ってみよう!ハンズオン手順(15/16)
しばらく待つと、下図のようにBlobの情報が確認できます。
コンテナ内のブロブ
ブロブコンテナ
アカウント名
18
手順 16. Azure Storage Explorerを起動しましょう(続き)。
コンテナに格納されたブロブ(ファイル)をダブルクリックします。
[Metadata]タブに り え、メタデータが設定されていることを確認します。
Azureを使ってみよう!ハンズオン手順(16/16)
[Image]タブに り え、ブロブとして格納した画像の内 を確認します。
P9の45、46 目でメタデータの
設定しています!
19
手順 1. ホステッドサービスを確認します。
ブラウザからWindows Azure ポータル(https://windows.azure.com/default.aspx)に接続します。
左下の[ホステッド サービス、ストレージ アカウント、CDN]を選択し、左中央の[ホステッドサービス]を選択します。
種類が[デプロイ]の項目を選択し、[構成]ボタンをクリックします。
☆おまけ1 デプロイ後にインスタンス数を変えてみよう!Windows Azureはインスタンス数を簡単に増 できるのも です。インスタンス数の変 は 動化することもできますが、ここでは手動で変 してみましょう!
今はインスタンス数が
1つです!
[デプロイの構成]ダイアログで、[現在の構成の編集]を選択します。<Instances>要素のcount属性を以下のように修正し、[OK]ボタンをクリックします。
旧:<Instances count=“1” />新:<Instances count=“3” />
しばらく待機し、インスタンス数が増えたことを確認します。
1つです!
Windows Azureにはロードバランサがついているので、インスタンス数を増やすだけで、簡単に負荷分散ができます!
20
手順 1. ホステッドサービスを削除します。
ブラウザからWindows Azure ポータル(https://windows.azure.com/default.aspx)に接続します。
左下の[ホステッド サービス、ストレージ アカウント、CDN]を選択し、左中央の[ホステッドサービス]を選択します。
種類が[デプロイ]の項目を選択し、[削除]ボタンをクリックします。
☆おまけ2 デプロイしたパッケージの削除方法(1/2)Windows Azureでは、インスタンスの をしても されます。ここでは、今回のハンズオンでデプロイしたものをすべて削除し、 が発生しないようにする方法を紹介します。
種類が[ホステッドサービス]の項目を選択し、[削除]ボタンをクリックします。
デプロイが消えてから[削除]ボタンを押しましょう!
21
手順 2. ストレージアカウントを削除します。
ブラウザからWindows Azure ポータル(https://windows.azure.com/default.aspx)に接続します。
左下の[ホステッド サービス、ストレージ アカウント、CDN]を選択し、左中央の[ストレージサービス]を選択します。
[ストレージの削除]ボタンをクリックします。
☆おまけ2 デプロイしたパッケージの削除方法(2/2)Windows Azureでは、インスタンスの をしても されます。ここでは、今回のハンズオンでデプロイしたものをすべて削除し、 が発生しないようにする方法を紹介します。
[ストレージサービス]を
選択しています
コレで はされない になるワ!Azureはとてもイイコで だからこれからもどんどん使ってネ。けれど、もしもAzureの解約をしたいときには、オンラインで解約も可能ヨ。詳しくは JAZUG はるたまさんのblogを てくださいネ。
http://d.hatena.ne.jp/haru-tama/20111219
22