Azure Management API - Create VMImage - InvalidXmlRequest -
本文关键字:VMImage InvalidXmlRequest Create Azure API Management | 更新日期: 2023-09-27 18:36:14
我希望有人能让我朝着正确的方向发展,通过服务管理 REST API 创建虚拟机映像。我尝试的所有方法都导致我返回400 InvalidXmlRequest错误,该错误指出"请求正文的XML无效或未正确指定"。
假设我有一个正确预配的订阅、存储帐户、容器和 Blob。我一直在向 https://management.core.windows.net/[省略订阅ID]/服务/vmimages API发送经过正确身份验证的POST请求,其中包含x-ms版本:2014-06-01标头,正文中具有以下XM:
<VMImages xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<VMImage>
<Name>my_image_20141120_service_sa01</Name>
<Label>my_Image_20141120_service_SA01</Label>
<Description>testimage</Description>
<OSDiskConfiguration>
<HostCaching>ReadWrite</HostCaching>
<OSState>Specialized</OSState>
<OS>Windows</OS>
<MediaLink>https://myservicesa.blob.core.windows.net/vhds/myimage_20141120.vhd</MediaLink>
</OSDiskConfiguration>
</VMImage>
</VMImages>
根据 http://msdn.microsoft.com/en-us/library/dn775054.aspx 这里的说明,我已经指定了所有必需的位,所以我不确定我发送的 xml 有什么无效。任何帮助将不胜感激!
文档不正确,对于由此造成的任何不便,我们深表歉意。如果将其更改为:
<VMImage xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Name>my_image_20141120_service_sa01</Name>
<Label>my_Image_20141120_service_SA01</Label>
<Description>testimage</Description>
<OSDiskConfiguration>
<HostCaching>ReadWrite</HostCaching>
<OSState>Specialized</OSState>
<OS>Windows</OS>
<MediaLink>https://myservicesa.blob.core.windows.net/vhds/myimage_20141120.vhd</MediaLink>
</OSDiskConfiguration>
</VMImage>
有两种类型的映像可用于创建虚拟机。操作系统映像始终是通用的,不维护原始计算机的先前状态。VM 映像可以是专用的,并维护附加的数据磁盘的状态。
有两组 REST 操作可用于操作系统映像上的操作和虚拟机映像上的操作。
使用 PowerShell 时,我相信您使用 Add-AzureVMImage 创建操作系统映像,并使用带有 -OSState 参数的 Save-AzureVMImage 来创建 VM 映像。
文档中也未提及的是,创建 VM 映像操作是异步的,因此需要使用"获取操作状态"操作来获取映像创建的状态。文档将很快更正。
谢谢astaykov,查看PowerShell的流量是一个很好的主意。事实证明,这个 API 的文档是完全错误的!不仅 XML 有效负载完全不同,API 本身也不同。需要调用的实际 API 端点是:
https://management.core.windows.net/[OmittedSubscriptionId]/services/images
请注意,它是"映像"与"vmimages"
开机自检的正文应如下所示:
<OSImage xmlns="http://schemas.microsoft.com/windowsazure">
<Label>identifier-of-image</Label>
<MediaLink>uri-to-vhd</MediaLink>
<Name>name-of-image</Name>
<OS>Opearting-System</OS>
<IsPremium>bool</IsPremium>
<ShowInGui>bool</ShowInGui>
</OSImage>
修改有效负载,它应该可以工作。
<VMImage xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <Name>my_image_20141120_service_sa01</Name> <Label>my_Image_20141120_service_SA01</Label> <Description>testimage</Description> <OSDiskConfiguration> <HostCaching>ReadWrite</HostCaching> <OSState>Specialized</OSState> <OS>Windows</OS> <MediaLink>https://myservicesa.blob.core.windows.net/vhds/myimage_20141120.vhd</MediaLink> </OSDiskConfiguration> </VMImage>
发布在
https://management.core.windows.net/[OmittedSubscriptionId]/services/vmimages