为什么Portal可以获得新图像,但SDK列表中没有?

时间:2014-05-14 21:42:32

标签: image azure sdk

我有2张Windows图片:

Image A - 几个月前创建

图片B - 今天创建

我用于创建此处描述的图像B的步骤: http://blogs.technet.com/b/keithmayer/archive/2013/01/17/step-by-step-templating-vms-in-the-cloud-with-windows-azure-and-powershell-31-days-of-servers-in-the-cloud-part-17-of-31.aspx

我使用这些图像使用Ruby SDK库创建新的VM。 所有这些都与Portal和SDK中的Image A一样正常工作。 对于图像B,它仅适用于Portal,但不适用于SDK。 SDK抛出“虚拟机映像源无效”。消息。

SDK调用的进一步调试显示,图像B不在列表中,但它出现在Portal的列表中......

我在图像A和图像B之间注意到的唯一区别是,在图像选项卡上,图像A将源设置为“ - ”,图像B指向云服务,其中托管了用于图像自定义的VM。删除Cloud Service B并未将图像B的源信息更改为“ - ”。

有人可以说明为什么Portal可以获得新图像,但不能从SDK列表中获取吗?

1 个答案:

答案 0 :(得分:0)

遗憾的是,ruby sdk缺少这个功能......你必须使用RESTful API来获取它们。

有关详细信息,请参阅HERE,但只需说明一下,这里有一段粗略的代码,可以帮助您:

def get(uri)
  uri = URI.parse(uri)
  pem = File.read('/path/to/management_cert')
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  http.cert = OpenSSL::X509::Certificate.new(pem)
  http.key = OpenSSL::PKey::RSA.new(pem)
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER

  request = Net::HTTP::Get.new(uri.request_uri)
  request['x-ms-version'] = '2014-06-01'
  request['Content-Length'] = 0

  http.request(request)
end

以下是如何调用上述方法(特定于列出图像)...

get 'https://management.core.windows.net/<subscription-id>/services/vmimages'

请务必将您的订阅ID放在上面网址中的注明位置。

另外,这(谢天谢地)会给你一个只有你的图片的列表......你仍然使用sdk来完成剩下的工作......请参阅上面的链接查看响应的xml架构。