Как я уже упоминал в одной из моих предыдущих публикаций, в Windows Azure существует прекрасный программный интерфейс, позволяющий управлять запущенными облачными сервисами. Интерфейс носит название Windows Azure Management API и сегодня я покажу на примере как использовать его в практических целях. Итак, поставим себе банальную задачу вывести в консольном приложении список запущенных на данный момент облачных сервисов, привязанных к активной подписке. В моем случае сам сервис представляет собой обычный ASP.NET сайт с единственной страничкой Default.aspx, на которой выводится надпись Hello World. Допустим также, что мы уже успешно развернули проект в клауде и он там успешно крутится.
Как видите мы использовали утилиту makecert. Она принимает большой список аргументов. Данная утилита очень подробно описана на странице MSDN (MakeCert Parameters), поэтому останавливаться на ней не будем. Итак, мы получили готовый сертификат, осталось загрузить его на портал и привязать к определенной подписке. Для этого перейдем на портале в раздел Management Certificates и загрузим только что созданный cer-файл.
На этом стадия подготовки закончена. Перейдем к самому клиенту. Как я уже говорил клиент представляет собой консольное приложение, выводящее список запущенных облачных сервисов. Давайте посмотрим на код приложения и разберем наиболее важные фрагменты.
Именно то, что нам и нужно. Задача выполнена успешно :) Как видим использовать Service Management API чрезвычайно просто. Конечно же API позволяет выполнять ЗНАЧИТЕЛЬНО большее количество операций над нашими облачными сервисами. Показанный в публикации функционал получения списка запущенных сервисов является лишь ничтожно малой частью всех возможностей этого прекрасного API. Надеюсь мой пост был полезным и приятной Вам работы с Windows Azure Service Management API !!
Повышенное внимание следует уделить надписи, выделенной красной рамкой. Это DNS префикс запущенного сервиса и именно его нам и необходимо будет вытянуть при помощи Management API. Понятное дело нам никто просто так не позволит обратиться к API. В первую очередь необходим сертификат для защищенного соединения между клиентом и облаком. В Windows Azure существуют 2 вида сертификатов – это Management Certificates и Service Certificates. Как Вы уже успели догадаться первые из них являются сертификатами уровня активной подписки и используются как раз для задач управления сервисами. Для создания такого сертификата запустим командную строку и в ней пропишем команду на создание X.509 сертификата.
Как видите мы использовали утилиту makecert. Она принимает большой список аргументов. Данная утилита очень подробно описана на странице MSDN (MakeCert Parameters), поэтому останавливаться на ней не будем. Итак, мы получили готовый сертификат, осталось загрузить его на портал и привязать к определенной подписке. Для этого перейдем на портале в раздел Management Certificates и загрузим только что созданный cer-файл.
На этом стадия подготовки закончена. Перейдем к самому клиенту. Как я уже говорил клиент представляет собой консольное приложение, выводящее список запущенных облачных сервисов. Давайте посмотрим на код приложения и разберем наиболее важные фрагменты.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Security.Cryptography.X509Certificates; using System.IO; using System.Xml.Linq; namespace AzureServiceManagementApiTester { class Program { static void Main(string[] args) { var request = (HttpWebRequest)WebRequest.Create("https://management.core.windows.net/75f6cd75-8d50-460f-a290-9c34b7ab34c2/services/hostedservices"); request.Headers.Add("x-ms-version:2009-10-01"); request.ClientCertificates.Add(X509Certificate2.CreateFromCertFile(@"D:\AzureTestCert.cer")); var response = request.GetResponse().GetResponseStream(); var xmlofResponse = new StreamReader(response).ReadToEnd(); XDocument doc = XDocument.Parse(xmlofResponse); XNamespace ns = "http://schemas.microsoft.com/windowsazure"; var services = (from r in doc.Descendants(ns + "HostedService") select r.Element(ns + "ServiceName").Value).ToList(); services.ForEach(entry => Console.WriteLine(entry)); Console.ReadKey(true); } } }В первой строке создается собственно сам запрос. Внимание необходимо обратить на идентификатор подписки (его можно посмотреть на портале разработчика).
Кроме того необходимо указать версию используемого API, а также сертификат безопасности, что и делается в последующих строках программы.
request.Headers.Add("x-ms-version:2009-10-01"); request.ClientCertificates.Add(X509Certificate2.CreateFromCertFile(@"D:\AzureTestCert.cer"));В качестве результата выполнения запроса мы получим следующий XML.
Осталось только дело техники - распарсить его, что мы успешно и делаем в заключительных строках программы.https://management.core.windows.net/75f6cd75-8d50-460f-a290-9c34b7ab34c2/services/hostedservices/feschenkoalex feschenkoalex
XDocument doc = XDocument.Parse(xmlofResponse); XNamespace ns = "http://schemas.microsoft.com/windowsazure"; var services = (from r in doc.Descendants(ns + "HostedService") select r.Element(ns + "ServiceName").Value).ToList(); services.ForEach(entry => Console.WriteLine(entry));В конечном счете на экране мы увидим следующую картину.
Именно то, что нам и нужно. Задача выполнена успешно :) Как видим использовать Service Management API чрезвычайно просто. Конечно же API позволяет выполнять ЗНАЧИТЕЛЬНО большее количество операций над нашими облачными сервисами. Показанный в публикации функционал получения списка запущенных сервисов является лишь ничтожно малой частью всех возможностей этого прекрасного API. Надеюсь мой пост был полезным и приятной Вам работы с Windows Azure Service Management API !!
Комментариев нет:
Отправить комментарий