클라우드 서비스 만들기

클라우드 서비스 만들기

 

Create Cloud Service 비동기 작업은 Microsoft Azure에서 새 클라우드 서비스를 만듭니다. 클라우드 서비스 및 클라우드 서비스 사용 방법에 대한 자세한 내용은 클라우드 서비스란?을 참조하십시오.

이 작업을 실행하려면 먼저 구독을 만들고 구독 식별자를 얻어야 합니다. Azure 구독 만들기에 대한 자세한 내용은 Microsoft Azure 시작을 참조하십시오. 구독 식별자는 관리 포털의 설정 페이지에서 가져올 수 있습니다. 작업 권한을 부여하기 위한 관리 인증서를 만들고 업로드합니다. 자세한 내용은 Microsoft Azure에 대한 관리 인증서 만들기 및 업로드를 참조하십시오.

다음과 같이 Create Cloud Service 요청을 지정합니다. <subscription-id>를 구독 ID로 바꾸세요.

방법

요청 URI

POST

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

관리 서비스에 대한 요청이 안전한지 확인해야 합니다. 자세한 내용은 Authenticating Service Management Requests을 참조하세요.

다음 표에서는 요청 헤더에 대해 설명합니다.

요청 헤더

설명

Content-Type

필수 사항입니다. 이 헤더를 application/xml로 설정합니다.

x-ms-version

필수 사항입니다. 이 요청에 사용할 작업의 버전을 지정합니다. 이 헤더의 값은 28.10.10 이상으로 설정해야 합니다. 버전 관리 헤더에 대한 자세한 내용은 Service Management Versioning를 참조하세요.

요청 본문의 형식은 다음과 같습니다.

<?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>
  <ReverseDnsFqdn>reverse-dns-fqdn</ReverseDnsFqdn>
</CreateHostedService>

다음 표에서는 요청 본문의 요소에 대해 설명합니다.

요소 이름

설명

ServiceName

필수 사항입니다. 클라우드 서비스의 이름을 지정합니다. 이 이름은 Azure 내에서 고유해야 합니다. 이 이름은 DNS 접두사 이름이며 서비스에 액세스하는 데 사용됩니다. 이름의 가용성을 확인하려면 클라우드 서비스 이름 가용성 확인을 참조하십시오.

Label

필수 사항입니다. Base-64로 인코딩된 클라우드 서비스의 식별자를 지정합니다. 식별자는 최대 100자까지 지정할 수 있습니다. 레이블은 추적용으로 사용할 수 있습니다.

설명

선택적 요소입니다. 클라우드 서비스의 설명을 지정합니다. 설명은 최대 1024자까지 입력할 수 있습니다.

위치

AffinityGroup이 지정되지 않은 경우 필수 사항입니다. 클라우드 서비스가 생성되는 위치를 지정합니다.

Location 또는 AffinityGroup 중 하나만 지정해야 합니다. 사용 가능한 위치를 확인하려면 위치 나열을 참조하십시오.

AffinityGroup

Location이 지정되지 않은 경우 필수 사항입니다. 구독에 연결된 기존 선호도 그룹의 이름을 지정합니다. Location 또는 AffinityGroup 중 하나만 지정해야 합니다. 사용 가능한 선호도 그룹을 보려면 선호도 그룹 나열을 참조하십시오.

Name

선택적 요소입니다. 확장 클라우드 서비스 속성의 이름을 지정합니다. 이름은 최대 64자일 수 있으며, 영숫자와 밑줄만 포함할 수 있으며, 문자로 시작해야 합니다. 각 확장 속성에는 정의된 이름과 값이 모두 있어야 합니다. 확장 속성은 50개까지 정의할 수 있습니다.

Name 요소는 버전 01.03.12 이후인 경우에만 사용할 수 있습니다.

선택적 요소입니다. 확장 클라우드 서비스 속성의 값을 지정합니다. 확장 속성 값은 255자까지 가능합니다.

Value 요소는 버전 01.03.12 이후인 경우에만 사용할 수 있습니다.

ReverseDnsFqdn

선택적 요소입니다. 역방향 DNS 쿼리를 사용하여 쿼리할 때 클라우드 서비스의 IP 주소가 확인될 DNS 주소를 지정합니다.

ReverseDnsFqdn 요소는 버전 2014-06-01 이후인 경우에만 사용할 수 있습니다.

응답에는 HTTP 상태 코드 및 응답 헤더 집합이 포함되어 있습니다.

작업에 성공하면 상태 코드 201(만들어짐)이 반환됩니다. 상태 코드에 대한 자세한 내용은 Service Management Status and Error Codes를 참조하세요.

이 작업의 응답에는 다음과 같은 헤더가 포함됩니다. 응답에는 추가 표준 HTTP 헤더가 포함될 수도 있습니다. 모든 표준 헤더는 HTTP/1.1 프로토콜 사양을 따릅니다.

응답 헤더

설명

x-ms-request-id

관리 서비스에 대해 수행된 요청을 고유하게 식별하는 값입니다. 비동기 작업의 경우 헤더 값과 함께 작업 상태 가져오기를 호출하여 작업이 완료되었는지, 실패했는지, 계속 진행 중인지 여부를 확인할 수 있습니다.

새 클라우드 서비스 만들기를 위한 다음과 같은 리소스를 참조할 수도 있습니다.

Next step:

클라우드 서비스를 만든 후 다음 단계는 배포를 만드는 것입니다. 자세한 내용은 다음 항목을 참조하십시오.

다음 콘솔 응용 프로그램 예제에서는 새 클라우드 서비스를 만드는 방법을 보여줍니다. 다음 변수 값을 바꿉니다.

  • Thumbprint – 구독의 관리 인증서 지문으로 바꿉니다.

  • SubscriptionId – 관리 포털에서 가져온 구독 식별자로 바꿉니다.

  • ServiceName – 새 클라우드 서비스에 사용하려는 이름으로 바꿉니다.

  • Location – 클라우드 서비스를 배치하려는 지리적 위치로 바꿉니다.

    System_CAPS_note참고

    use 목록 위치를 사용해서 적합한 위치를 얻을 수 있습니다.


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));
    }
  }
}
표시:
© 2016 Microsoft