问题
i am writing a small java client that uses the Azure Service Management API to create a new VM Deployment on Azure. i keep getting bad requests responses like these:
17/07/2012 18:26:37 com.sun.jersey.api.client.filter.LoggingFilter log
INFO: 1 * Client out-bound request
1 > POST https://management.core.windows.net/my-subscription-id/services/hostedservices/myservice/deployments
1 > x-ms-version: 2012-03-01
1 > Content-Type: application/xml
<Deployment xmlns="http://schemas.microsoft.com/windowsazure">
<Name>mynametest</Name>
<DeploymentSlot>Staging</DeploymentSlot>
<Label>mynamelabel</Label>
<RoleList>
<Role>
<RoleName>mynamerolename</RoleName>
<RoleType>PersistentVMRole</RoleType>
<ConfigurationSets>
<ConfigurationSet>
<ConfigurationSetType>LinuxProvisioningConfiguration</ConfigurationSetType>
<HostName>myunamehost</HostName>
<UserName>myname</UserName>
<UserPassword>password</UserPassword>
</ConfigurationSet>
</ConfigurationSets>
<OSVirtualHardDisk>
<SourceImageName>CANONICAL__Canonical-Ubuntu-12-04-amd64-server-20120528.1.3-en-us-30GB.vhd</SourceImageName>
</OSVirtualHardDisk>
</Role>
</RoleList>
</Deployment>
17/07/2012 18:26:38 com.sun.jersey.api.client.filter.LoggingFilter log
INFO: 1 * Client in-bound response
1 < 400
1 < x-ms-request-id: c622e270c5934cb493f76790b7d2c49d
1 < Date: Tue, 17 Jul 2012 15:27:26 GMT
1 < Content-Length: 275
1 < Content-Type: application/xml; charset=utf-8
1 < Server: 6.0.6002.18488 (rd_rdfe_stable.120710-1331) Microsoft-HTTPAPI/2.0
1 <
<Error xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Code>BadRequest</Code><Message>No target URI is specified for the image CANONICAL__Canonical-Ubuntu-12-04-amd64-server-20120528.1.3-en-us-30GB.vhd.</Message></Error>
it looks like the docs from azure are buggy: http://msdn.microsoft.com/en-us/library/windowsazure/jj157194
anyone has tried this before? i dont understand what does 'target URI' mean... the image name is taken from the public gallery of images on azure.
any help, any help at all, will be highly appreciated. thanks
回答1:
Your xml have some bad configuration i.e. DeploymentSlot etc and I also believe the error is coming because you do not have all required settings in your XML. Following is the working one for Linux Gallery image:
<Deployment xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Name>mydeploymentname</Name>
<Label>mydeploymentlabel</Label>
<RoleList>
<Role>
<RoleName>mylinuxvm2012</RoleName>
<RoleType>PersistentVMRole</RoleType>
<ConfigurationSets>
<ConfigurationSet>
<ConfigurationSetType>LinuxProvisioningConfiguration<ConfigurationSetType>
<HostName>host-name-for-the-vm</HostName>
<UserName>new-user-name</UserName>
<UserPassword>password-for-the-new-user</UserPassword>
<DisableSshPasswordAuthentication>true|false</DisableSshPasswordAuthentication>
<SSH>
<PublicKeys>
<PublicKey>
<FingerPrint>******add_here******</FingerPrint>
<Path>****SSH-public-key-storage-location**********</Path>
</PublicKey>
</PublicKeys>
<KeyPairs>
<KeyPair>
<FingerPrint>************certificate-fingerprint*************</FinguerPrint>
<Path>*************SSH-public-key-storage-location*************</Path>
</KeyPair>
</KeyPairs>
</SSH>
</ConfigurationSet>
<OSVirtualHardDisk>
<HostCaching>ReadWrite</HostCaching>
<DiskLabel>myosdisklabel</DiskLabel>
<DiskName>myazurelinuxvm</DiskName>
<MediaLink>https://_yourstoragename_.blob.core.windows.net/vhds/_your_VHD_NAME_.vhd</MediaLink>
<SourceImageName>CANONICAL__Canonical-Ubuntu-12-04-amd64-server-20120528.1.3-en-us-30GB.vhd</SourceImageName>
</OSVirtualHardDisk>
<RoleSize>_ExtraSmall|Small|Medium|Large|ExtraLarge_</RoleSize>
</Role>
</RoleList>
来源:https://stackoverflow.com/questions/11525988/badrequest-using-azure-service-management-api-to-create-vm