精打细算使用云服务: Windows Azure 管理库和.Net实现自动化
[原文发表时间] 2013-12 –16
尽管我为Azure和ASP.NET团队工作,我的Azure帐户也得我自己购买。坦白地说,如果我获得免费的云时间,我不仅可能会滥用它,而且我可能也不会按照它的使用方式使用它!依我看来,一个好的云计算是一种价格实惠的云。就像我所用的CDNs, 当我需要它们工作的时候, 拥有高速缓存, 并专注于廉价资源和为我工作的计算机之前的平衡。当我不需要的时候,它们就会休眠(不花费我的金钱)。
像是网站的自动缩放功能,例如: 基于CPU或者时间表,但有时从大的虚拟机上退出使我陷入困境。我使用命令行管理我大部分的Azure资产, 所以我可以从“azure 虚拟机列表”中看到哪些在运行,我会看到以下内容
C:\Users\scottha
λ azure vm list
info: Executing command vm list
+ Getting virtual machines
data: Name Status Location DNS Name
data: -------------------- ------------------ -------- -------------------------------
data: VSinTheSky StoppedDeallocated West US vsinthesky.cloudapp.net
data: hanselmandiscourse StoppedDeallocated West US discourse.cloudapp.net
data: hanselmansendy ReadyRole West US sendy.cloudapp.net
data: hanselmanlinuxfarm StoppedDeallocated West US linuxfarm.cloudapp.net
data: hanselmanlinuxfarm-2 StoppedDeallocated West US linuxfarm.cloudapp.net
data: hanselmanlinuxfarm-3 StoppedDeallocated West US linuxfarm.cloudapp.net
data: hanselmanmysql ReadyRole West US mysql.cloudapp.net
info: vm list command OK
如果我想关掉一台的话我可以在Azure 门户网站上使用命令行. 甚至通过VS管理VMs:
但有时候,我用自定义的应用程序来管理Azure的资源, 可能是Windows或WPF的应用程序,MSbuild 任务,或者我想把云管理添加到现有进程当中。我不只是想关掉虚拟机,还希望能管理网站,建立资源,上传存储等等。
我从Brady Gaster那儿了解到Windows Azure Management Libraries for .NET 现在是Azure SDK 的一部分了。基本上,这意味着你可以调用与Azure门户相同后端的REST API,这样简单的封装,使得它们在.NET中相对容易点。
在Brady的博客中有很多关于类库的信息。 下边是一些最好的亮点。
- 支持可移植类库(PCL)
- 以一组聚焦在拥有对简单版本控制依赖最少的NuGet包的形式上市
- 支持异步/ await-based任务异步(可容易同步重载)
- 有一个专门为常见错误处理,跟踪,调试配置和HTTP 管道控制的共享基础设施。
- 考虑到简化可测性以及可模拟性建在想HttpClient 和Json.NEt这样的流行库上。
- 所有的代码都是开源的并且放在GitHub上。
Windows Azure management Libraries for .NET在NuGet上是一个组包,但你可以可以分开得到它们。例如你只想管理虚拟机。这里是我使用的NuGet的版本。请注意,这篇文章是预发布的那天写的。
https://www.nuget.org/packages/Microsoft.WindowsAzure.Management.Libraries
Azure身份验证和授权基于 X 509 证书,因此您将使用那些来初始化您的Azure实例。您可以在这里从一个已通过身份验证的Azure上下载您的证书,您的证书和订阅号都在里面。
我可以列举出来,例如,我所有的网站都运行在各自的地方(web空间)
using (var client = new WebSiteManagementClient(creds)) {
var spaces = client.WebSpaces.List();
foreach (var space in spaces) {
Console.WriteLine("Space: {0}", space.Name);
var sites = client.WebSpaces.ListWebSites(space.Name, new WebSiteListParameters{ PropertiesToInclude = { "Name" }});
foreach (var site in sites) {
Console.WriteLine(" " + site.Name);
}
}
}
这个小程序输出:
Space: eastuswebspace
SmallestDotNet
Space: northcentraluswebspace
Hanselminutes
Space: northeuropewebspace
Space: westuswebspace
babysmash
nerddinnerofficial
ratchetandthegeek
speakinghacks
thisdeveloperslife
hanselmanlyncrelay
HanselmanGhost
anglebrackets
lostphonescreen
loggingtest
GetInvolved
keysleft
我可以去更新网站,禁用(停止)网站,建立网络农场,规划它们,创建、配置和做我可以非常灵活地从命令行做的所有操作。现在我可以从PowerShell,.NET,或者从节点和跨平台的命令行, Visual Studio,以及Azure门户来管理Azure的东西。
你可以在Brady的博客中读到关于Windows Azure管理库的相关内容,在NuGet 上获得它们,或者在GitHub上读到代码并提出问题。
如果你 链接你的MSDN和Azure帐户, 你可以每个月得到高达150美元的Azure信用额度, 这可以使两个免费的虚拟机全天运行一个月。
我写了几篇有关“精打细算使用云服务”的文章, 也许你会喜欢.
- 精打细算使用云服务:AzureWebsites什么时候有意义?
- 精打细算使用云服务:在WindowsAzureWebsites上启用新的性能监视器
- 视频教你精打细算: 把我的网站图像移到Azure CDN上 (并且使用一个自定义域名)
- 视频教你精打细算:把Azure网站移到两个数据中心之间
- 在缩放云服务时精打细算 - 延迟加载图片并使用Azure CDN来节省开支
- 精打细算使用云服务: 如何用十美元运行一个为期两天的虚拟会议
此外,我鼓励您收看Azure星期五,是我在https://friday.azure.com 做的新节目。Azure星期五在ITunes上同时是一个可下载的高清播客!