windows azure service management rest api
TRANSCRIPT
http:/twitter.com/statemachine
1
HN statemachine
Twitter http://twitter.com/statemachine
Blob Azureの小ネタ
http://d.hatena.ne.jp/StateMachine
Azure歴 7ヶ月
職種 研究開発職らしい (SEではないです)
最近は、日々とAzureと戯れております
2
Windows Azureを外部から操作できるAPI
→ プログラムからAzureを操作可能
ストレージライブラリのようにマネージライブラリは提供されずREST API を直接操作
これらを利用したツールは以下
Windows Azure MMC スナップイン
Windows Azure Service Management CmdLet
csmanage.exe (ソース付)
3
ホストサービス
一覧、情報、状態取得
アプリケーションを配置、削除、実行、サスペンド 構成ファイル変更、アップグレード、スワップなど
ストレージ
ストレージ一覧、情報取得
キーの取得、再生成
証明書の操作
Affinityグループの操作
ゲストOS情報の取得
非同期操作のトラッキング 4
ホストサービスの作成、削除
ストレージアカンウントの作成、削除
5
① 証明書の 作成とアップロード
https://management.core.windows.net/<サブスクリプションID >
レスポンス
データ
③ レスポンス取得
② 操作URIへHTTPでリクエスト
6
// サブスクリプションIDと証明書の拇印 string subscriptionId = "サブスクリプションIDを入れてね"; string thumbprint = "証明書の拇印を入れてね"; // 証明書ストアから証明書を検索 X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false); X509Certificate2 cert = certs[0]; store.Close();
続く... 現在のユーザー/個人 から検索
7
// 操作毎にURIが異なる Uri uri = new Uri(string.Format( "https://management.core.windows.net/{0}/operatingsystems", subscriptionId)); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); request.Method = "GET"; //証明書とヘッダを付加 request.ClientCertificates.Add(cert); request.Headers.Add("x-ms-version", "2010-04-01"); //レスポンス。XMLを読み込む var response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) { var body = XElement.Load(response.GetResponseStream()); Console.WriteLine(body); }
ゲストOS一覧を取得するURI
GET
証明書、ヘッダつける
レスポンスはXML 8
<OperatingSystems xmlns=http://schemas.microsoft.com/windowsazure xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <OperatingSystem> <Version>WA-GUEST-OS-1.0_200912-01</Version> <Label>V2luZG93cyBBenVyZSBHdWVzdCBPUyAxLjAgKFJlbGVhc2・・・・・・・・・・</Label> <IsDefault>false</IsDefault> <IsActive>true</IsActive> </OperatingSystem>
~ 中略 ~ <OperatingSystem> <Version>WA-GUEST-OS-1.5_201006-01</Version> <Label>V2luZG93cyBBenVyZSBHdWVzdCBPUyAxLjUgKFJlbGVhjA・・・・・・・・・・</Label> <IsDefault>true</IsDefault> <IsActive>true</IsActive> </OperatingSystem> </OperatingSystems>
レスポンスデータとしてXMLが取得できる
あとは、煮るなり焼くなりLINQなりする
9
ゲストOS のバージョン取得し、
DataGridでXMLをバインド表示
ホストサービスから一覧を取得、一括削除
10
管理APIを使うとAzureをプログラムから操作可能
マネージライブラリはないので、REST APIを操作
詳細は、MDNライブラリ
http://msdn.microsoft.com/en-
us/library/ee460799.aspx
Service Management APIを利用して、
かゆいところに手が届く Azureオリジナルツールの開発を!!
11