通过本文你将了解:

什么是Azure Service Management REST API

如何获取微软Azure 订阅号

如何获取Azure管理证书

如何调用Azure Service Management REST API

什么是Azure Service Management REST API

Azure Service Management REST API(之后简称为Azure REST API)是微软开放的一组REST API,它使得Azure用户不仅可以从Azure门户网站上对运行在Azure上的服务进行管理,同时也可以通过自己或其他第三方的程序来对Azure上的服务进行管理。

基于REST服务的REST API有一个最大的好处就是它是使用HTTP请求进行调用的,这样使得你可以用各种各样的开发语言和开发工具来开发基于Azure服务管理的服务及应用。(包括微软的Azure PowerShell也是基于该API进行开发的)。

所有Azure REST API 都是通过SSL加密的,调用的时候需要用过X.509 v3证书来进行交互认证的。

在调用Azure REST API的时候,至少有两个信息是必须具备的。

1.微软Azure订阅号。

2.存在于Azure 证书管理服务中的X.509 V3证书。

如何获取微软Azure 订阅号

微软Azure订阅号(Subscription ID)就是微软Azure中用来识别用户身份的用户名。它是一串ID,每个对Azure REST API的调用都会在URL内包含这个ID。Azure REST API就是通过这种方式识别用户身份的。

获取这个ID的方式也十分简单:

1.登录Azure门户

2.在左边目录栏中找到设置选项点击打开

3.在右边找到账户对应的subscription id,这就是Azure的订阅号了,在调用Auzre REST API的时候会用到。

如何获取Azure管理证书

Azure 管理证书是一个用于验证代理(如 Visual Studio Tools for Windows Azure 或使用服务管理 API 的客户端应用程序)的 X.509 v3 证书,从而代表订阅所有者管理订阅资源。Azure 管理证书将上载到 Azure 中并存储在订阅级别。

在调用Azure REST API的时候需要使用一个与Auzre 证书管理器中证书相同的客户端证书,才能够通过验证。

获取这个证书的途径有两种

第一种:本地创建证书并上载到Azure中

这种方法的详细过程请参考 MSDN:

创建并上载 Azure 的证书

在上传完成后,你的Azure管理证书中会存放在本地的机器“个人”证书存储中。

你可以通过这个证书的指纹来找到该证书。

1.打开Azure管理页面

2.在左边目录栏中找到设置选项点击打开

3.在右边目录选项中找到“管理证书”选项点击打开

4.通过你上传时输入的名称找到你上传的证书,获取其指纹

5.在程序中通过指纹来从“个人”证书存储中获取证书对象

在代码中获取证书对象的代码如下:

public static string CertificateThumbprint = "f70dee7fec7364a57c09f09811c7519bc4402c56";//通过上面第四步可以获得指纹的字符串。
public static X509Certificate2 Certificate;X509Store certificateStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
certificateStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = certificateStore.Certificates.Find(
X509FindType.FindByThumbprint,
CertificateThumbprint,
false);if (certs.Count == 0)
{
Console.WriteLine("Can't find the certificate in your local computer.");
Console.ReadKey();
return;
}
else
{
Certificate = certs[0];
}

  

第二种:通过下载publishsettings 文件的方式获取管理证书

1.通过以下链接下载publishsettings文件(需要登录后方可下载)

https://manage.windowsazure.com/publishsettings/index?client=vs&schemaversion=2.0&whr=azure.com

2.以文本的形式打开该文件,该文件中会附带用户证书名以及Azure管理证书转化成Base64之后的字符串。

3.将这个证书的base64字符串转化成证书对象。

相关代码如下:

 private const string SettingsFilePath = @"{publish settings file path}";private const string SubscriptionID = "{Subscription ID}";private static X509Certificate2 getCertificateBySubscriptionID(string settingsFilePath, string subscriptionID){XElement xElement = XElement.Load(settingsFilePath);var subscriptionElements = xElement.Descendants("Subscription");var base64cer = subscriptionElements.Where(e => e.Attribute("Id").Value.ToString() == subscriptionID).FirstOrDefault().Attribute("ManagementCertificate").Value.ToString();return new X509Certificate2(Convert.FromBase64String(base64cer));}

  

第一种方法是MSDN介绍文档中的方法,但我个人认为第二种方法更加方便,更加简单,因为使用第二种方法,你的程序在其他地方运行时只需要将证书以字符串的形式保存就可以了,而如果用第一种,你需要在其他机器上也将证书导入证书管理器中,这样会非常的麻烦,而且有时还会有一些莫名其妙的错误。

如何调用Azure Service Management REST API

调用API的方式就是利用HttpWebRequest发送HTTP请求

我们可以参考以下示例文档来进行调用。

http://msdn.microsoft.com/zh-cn/library/azure/hh264518.aspx

该实例文档列出了创建一个云存储账号所需要的信息。

在该文档中的请求下面我们可以获取发送请求的URL,以及HTTP请求的方法。

请求标头下面我们可以获取请求必须的标头

注:这里值得注意的是x-ms-version

x-ms-version

必需。指定用于此请求的操作的版本。必须将此标头的值设置为 2011-06-01 或更高版本。有关版本控制标头的更多信息,请参阅服务管理版本控制。

这里需要注意的是,由于参考文档的更新不是很快,很有可能Azure 最新的REST API已经不支持老版本的x-ms-version了,建议参阅服务管理版本控制直接取最新的版本。

请求正文例举了一个包含了所有必须与非必须参数请求主体,并且用表格列出了各个参数是否必须,以及他们的功能及作用。

状态代码描述了响应请求返回的状态代码。方便我们在获取响应的时候可以直接判断调用操作是否成功。

最后我们可以在示例代码中找到调用REST API的示例代码。

在这个官方示例中包含了许多使用REST API的技巧方法,总结如下:

一. 如何用程序获取证书对象。(在本文之前已经讲过了,可以用通过下载publishsettings 文件的方式获取管理证书的方式替换

二. 如何创建一个发送HTTP 请求的公共方法。(示例中的 invokeRequest方法)

三. 如何获取一个HTTP请求返回的信息,包括在出现异常的情况下如何获取其返回的错误信息。可以参考(示例中invokeRequest 方法最后一部分的代码)

            try{response = (HttpWebResponse)request.GetResponse();}catch (WebException ex){// GetResponse throws a WebException for 4XX and 5XX status codesresponse = (HttpWebResponse)ex.Response;}try{statusCode = response.StatusCode;if (response.ContentLength > 0){using (XmlReader reader = XmlReader.Create(response.GetResponseStream())){responseBody = XDocument.Load(reader);}}if (response.Headers != null){requestId = response.Headers["x-ms-request-id"];}}finally{response.Close();}if (!statusCode.Equals(expectedCode)){throw new ApplicationException(string.Format("Call to {0} returned an error:{1}Status Code: {2} ({3}):{1}{4}",uri.ToString(),Environment.NewLine,(int)statusCode,statusCode,responseBody.ToString(SaveOptions.OmitDuplicateNamespaces)));}return requestId;

四. 如何获取操作的状态信息(可以参考GetOperationStates方法)

总结:

Azure REST API 优点:

Azure REST API是基于SOA开发的REST服务,开发者可以使用任何支持HTTP协议的开发语言来开发基于该服务的程序。

Azure REST API 缺点:

直接如示例般Azure REST API但是其编程的模式并非如面向对象的编程,所以在调用的时候复用性,和扩展性都不是很强,需要开发者自己去构建对象,来增加扩展性。

(好在,微软的开发人员已经推出了基于REST API的C#类库,来方便.net开发人员用他们熟悉的方式来间接的调用Azure REST API。 详情请参照:

Azure Management API 之 利用 Windows Azure Management Libraries 来控制Azure platform)

转载于:https://www.cnblogs.com/he-yuan/p/3706128.html

如何通过Azure Service Management REST API管理Azure服务相关推荐

  1. 如何使用Azure API管理服务?

    对打通云应用之间的通信而言,API至关重要,正确管理这些API也非常关键.让我们从学习Azure的API服务来开始这一进程. 在云和微服务架构时代,API是数字化业务的通用语言.根据分析公司Forre ...

  2. Azure Service Fabric正式发布

    在近日于旧金山举行的微软Build大会上,该公司宣布Azure Service Fabric正式发布.InfoQ先前曾经报道过Azure Service Fabric,因此,本文将重点介绍最近的更新和 ...

  3. Service Mesh:调度千军万马微服务,2.0妥妥的

    冠望 发自 凹非寺 量子位 报道 | 公众号 QbitAI 过去一年,继Kubernetes风靡,Service Mesh已成功上位变成当之无愧的技术网红. TA不但可以极大简化用户使用体验,还将大中 ...

  4. azure api 管理_通过成本管理跟踪Azure成本

    azure api 管理 The Azure Portal offers the free tool Cost Management that we can use for managing Azur ...

  5. azure api 管理_Azure Cosmos DB和MongoDB API入门

    azure api 管理 In the previous article on Azure Cosmos DB, we reviewed NoSQL concepts and how to integ ...

  6. azure api 管理_使用API​​使用Azure Cosmos DB进行图形数据库实现

    azure api 管理 In my previous article, I've discussed a lot about the Graph database implementation wi ...

  7. 微软宣布在Azure API管理中预览OpenAPI规范V3

    最近,微软宣布在Azure API管理中支持OpenAPI规范V3,他们的服务允许创建.发布.监控和维护API.OpenAPI规范的使用是通过 OpenAPI .NET SDK完成的,并支持从它们的实 ...

  8. azure api 管理_具有Azure功能的无服务器API

    azure api 管理 在这篇文章中,我将研究一个非常简单的用例. 在执行部署管道时, FlexDeploy可能会产生一些应被批准或拒绝的人工任务. 例如,某人必须批准对生产环境的部署. 可以在Fl ...

  9. Azure Information Protection信息保护(AIP)/Azure Rights Management权限管理(RMS)

    Azure Information Protection,即Azure信息保护,简称AIP,也称之为Azure Rights Management,即Azure权限管理,简称ARM. 使用过本地Win ...

  10. ToB的新思维“MaaS”--管理即服务(Management as a Service)

    导语:关于ToB的发展问题大家谈论很多了,感觉焦点还是在产品上,产品的思路不对,空谈商业模式.销售打法没有用,本文就用户需求和产品的设计谈一点个人看法. 2020庚子年,注定是将中国史册的一年,也会在 ...

最新文章

  1. flask学习笔记之blueprint
  2. 时间控件之赋值问题:datetimebox
  3. 对不起,我就是喜欢问你Spring构造器注入原理
  4. linux查看文件只会用vi?除了vi,这几个文件查看的命令,让你爱不释手!
  5. Java序列化注意事项
  6. CC++动态分配内存(手动分配内存)三种方式
  7. linux的常用操作——用户的添加、删除和查看
  8. 在mysql中 11div4_雷林鹏分享:MySQL 运算符
  9. Linux基本命令(二)
  10. 随机数插入排序c 语言,C语言程序设计100例之(22):插入排序
  11. vue.js bootstrap 下拉列表_陕西省百度下拉总代理
  12. 数据库系统工程师输给了计算机等级考试二级
  13. jquery.hotkeys监听键盘按下事件keydown
  14. Flink catalog简单使用
  15. 计算机通信技术【计算机网络】学习
  16. 【学习备忘录】ele项目的环境配置
  17. 【gradle exclude冲突依赖】
  18. Local time zone must be set-see zic manual page
  19. 2022前端秋招面试题总结 阿里 腾讯 字节 百度 网易 京东 小红书 快手面试记录
  20. 【论文翻译】基于图关注网络的异构网络类型感知锚链路预测

热门文章

  1. SpringMVC相关面试题总结
  2. spring事务失效场景三:内部方法调用
  3. springcloud整合sentinel
  4. Facebook全面实施GDPR 用户Pages页面被随意锁定
  5. JS 通过选择百度地图地址获取经纬度自动填充到文本框中的方法
  6. Shell脚本检测文件夹是否已被挂载的方法
  7. 控制反转与依赖注入概述——Spring IOC/DI(一)
  8. Visual Studio Code如何打开多个tab标签
  9. C++复合类型-指针变量
  10. Windows下MySQL的安装步骤(有图详解)