导出 (0) 打印
全部展开

创建云服务

更新时间: 2014年4月

Create Cloud Service 操作在 Windows Azure 中新建云服务。有关云服务是什么以及如何使用它们的详细信息,请参阅什么是云服务?

必须先创建订阅并获取订阅标识符,然后才能运行此操作。有关创建 Windows Azure 订阅的详细信息,请参见欢迎使用 Windows Azure。可在 Windows Azure 管理门户的“设置”页上获取订阅标识符。请创建并上载管理证书以便为此操作授权。有关更多信息,请参阅创建并上载 Windows Azure 的管理证书

按如下所示指定 Create Cloud Service 请求。请将 <subscription-id> 替换为您的订阅 ID。此操作使用 HTTP 1.1 版。

 

方法 请求 URI

POST

https://management.core.windows.net/<subscription-id>/services/hostedservices

无。

下表介绍请求标头。

 

请求标头 说明

Content-Type

必需。将此标头设置为 application/xml

x-ms-version

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

请求正文的格式如下所示:

<?xml version="1.0" encoding="utf-8"?>
<CreateHostedService xmlns="http://schemas.microsoft.com/windowsazure">
  <ServiceName>name-of-cloud-service</ServiceName>
  <Label>base64-encoded-label-of-cloud-service</Label>
  <Description>description-of-cloud-service</Description>
  <Location>location-of-cloud-service</Location>
  <AffinityGroup>name-of-affinity-group</AffinityGroup>
  <ExtendedProperties>
    <ExtendedProperty>
      <Name>name-of-property</Name>
      <Value>value-of-property</Value>
    </ExtendedProperty>
  </ExtendedProperties>
</CreateHostedService>
Important重要提示
请求正文中的元素顺序非常重要。如果元素是必需的,它必须按以上所示的顺序显示在 XML 中。

下表介绍了请求正文中的主要元素:

 

元素名称

说明

ServiceName

必需。指定云服务的名称。此名称在 Windows Azure 中必须是唯一的。此名称是用于访问该服务的 DNS 前缀名称。若要验证名称的可用性,可使用检查云服务名称可用性

Label

必需。指定云服务的 Base-64 编码的标识符。标识符的长度最多是 100 个字符。该标签可用于跟踪用途。

Description

可选。指定云服务的说明。说明的长度最多是 1024 个字符。

Location

如果未指定 AffinityGroup,则是必需的。指定创建云服务的位置。

必须指定 LocationAffinityGroup,但不能同时指定两者。若要查看可用的位置,可使用列出位置

AffinityGroup

如果未指定 Location,则是必需的。指定与订阅相关联的现有地缘组的名称。必须指定 LocationAffinityGroup,但不能同时指定两者。若要查看可用的地缘组,可使用列出地缘组

Name

可选。指定某个扩展的云服务属性的名称。名称最长可以是 64 个字符,只有字母数字字符和下划线在名称中有效,并且名称必须以字母开头。每个扩展属性都必须有定义的名称和值。最多可以定义 50 个扩展属性。

仅在 2012-03-01 版或更高版本中才可以使用 Name 元素。

Value

可选。指定某个扩展的云服务属性的值。扩展属性值的长度最多是 255 个字符。

仅在 2012-03-01 版或更高版本中才可以使用 Value 元素。

响应包括 HTTP 状态代码和一组响应标头。

成功的操作将返回状态代码 201(已创建)。有关状态代码的信息,请参阅服务管理状态和错误代码

此操作的响应包括以下标头。该响应还可能包括其他标准 HTTP 标头。所有标准标头都符合 HTTP/1.1 协议规范

 

响应标头 说明

x-ms-request-id

一个值,它唯一地标识对管理服务做出的请求。对于异步操作,可调用 Get Operation Status 配合标头值以确定操作已完成、失败还是仍在进行中。有关详细信息,请参阅跟踪异步服务管理请求

无。

可使用任何与 <subscription-id> 指定的订阅关联的管理证书对此操作进行身份验证。有关其他详细信息,请参阅对服务管理请求进行身份验证

您还可以使用以下资源创建新的云服务:

Next step:

创建云服务后,下一步是创建部署。有关详细信息,请参见下列内容:

以下控制台应用程序示例演示如何创建新的云服务。请替换以下变量值:

  • Thumbprint – 替换为订阅中的管理证书的指纹

  • SubscriptionId – 替换为从管理门户获取的订阅标识符

  • ServiceName – 替换为要用于新的云服务的名称

  • Location – 替换为要定位云服务的地理位置



    note备注
    可使用列表位置获取合适的位置。


using System;
using System.Collections.Generic;
using System.Xml.Linq;
using System.Text;
using System.Security.Cryptography.X509Certificates;
using System.Net;
using System.IO;

namespace CreateCloudService
{
  class Program
  {
    private static XNamespace wa = "http://schemas.microsoft.com/windowsazure";
    private const string Thumbprint = "thumbprint-of-certificate";
    private const string SubscriptionId = "identifier-of-subscription";
    private const string ServiceName = "name-of-cloud-service";
    private const string Location = "location-of-cloud-service";
    private const string Version = "2013-08-01";

    // Gets or sets the certificate that matches the Thumbprint value.
    private static X509Certificate2 Certificate { get; set; }

    static void Main(string[] args)
    {
      Certificate = GetStoreCertificate(Thumbprint);

      // Create the URI for the request
      string uriFormat = "https://management.core.windows.net/{0}/services/hostedservices";
      Uri uri = new Uri(String.Format(uriFormat, SubscriptionId));

      // Base-64 encode the label of the cloud service
      byte[] bytes = System.Text.Encoding.UTF8.GetBytes(ServiceName);
      string base64Label = Convert.ToBase64String(bytes);

      // Create the request body
      XDocument requestBody = new XDocument(
        new XDeclaration("1.0", "UTF-8", "no"),
        new XElement(wa + "CreateHostedService",
          new XElement(wa + "ServiceName", ServiceName),
          new XElement(wa + "Label", base64Label),
          new XElement(wa + "Location", Location)));

      // Submit the request and get the response
      HttpWebResponse response = InvokeRequest(uri, "POST", requestBody);

      HttpStatusCode statusCode = response.StatusCode;
      Console.WriteLine("The status of the operation: {0}", statusCode.ToString());
      Console.Write("Press any key to continue:");
      Console.ReadKey();
    }

    // Set the request headers and submit the request
    private static HttpWebResponse InvokeRequest(
      Uri uri,
      string method,
      XDocument requestBody)
    {
      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
      request.Method = method;
      request.Headers.Add("x-ms-version", Version);
      request.ClientCertificates.Add(Certificate);
      request.ContentType = "application/xml";
           
      HttpWebResponse response;

      try
      {
        byte[] byteArray = null;
        byteArray = Encoding.UTF8.GetBytes(requestBody.ToString());
        Stream stream = request.GetRequestStream();
        stream.Write(byteArray, 0, byteArray.Length);
        stream.Flush();
        stream.Close();

        response = (HttpWebResponse)request.GetResponse();
      }
      catch (WebException ex)
      {
        response = (HttpWebResponse)ex.Response;
      }
      response.Close();
      return response;
    }

    // Gets the certificate matching the thumbprint from the local store.
    // Throws an ArgumentException if a matching certificate is not found.
    private static X509Certificate2 GetStoreCertificate(string thumbprint)
    {
      List<StoreLocation> locations = new List<StoreLocation>
      { 
        StoreLocation.CurrentUser, 
        StoreLocation.LocalMachine
      };

      foreach (var location in locations)
      {
        X509Store store = new X509Store("My", location);
        try
        {
          store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
          X509Certificate2Collection certificates = store.Certificates.Find(
            X509FindType.FindByThumbprint, thumbprint, false);
          if (certificates.Count == 1)
          {
            return certificates[0];
          }
        }
        finally
        {
          store.Close();
        }
      }
      throw new ArgumentException(string.Format(
        "A Certificate with Thumbprint '{0}' could not be located.",
        thumbprint));
    }
  }
}

显示:
© 2014 Microsoft