VENTAS: 1-800-867-1389

Crear Servicios en la nube

Actualizado: febrero de 2015

La operación asincrónica Create Cloud Service crea un nuevo servicio en la nube en Microsoft Azure. Para obtener más información acerca de los servicios en la nube y cómo utilizarlos, vea ¿Qué es un servicio en la nube?.

Antes de ejecutar esta operación, debe crear una suscripción y obtener el identificador de la suscripción. Para obtener más información sobre la creación de una suscripción de Azure, vea Bienvenido a Microsoft Azure. Puede obtener el identificador de la suscripción en la página Configuración del Portal de administración. Crear y cargar un certificado de administración para autorizar la operación. Para obtener más información, vea Crear y cargar un certificado de administración para Microsoft Azure.

La solicitud Create Cloud Service se especifica como sigue. Reemplazar <subscription-id> con el identificador de suscripción:

 

Método URI de solicitud

POST

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

Debe asegurarse de que la solicitud que se realice al servicio de administración sea segura. Para obtener detalles adicionales, vea Autenticar solicitudes de administración del servicio.

Ninguna.

La tabla siguiente describe los encabezados de solicitud.

 

Encabezado de solicitud Descripción

Content-Type

Requerido. Establezca este encabezado en application/XML.

x-ms-version

Requerido. Especifica la versión de la operación que se utiliza para esta solicitud. El valor de este encabezado debe establecerse en 28.10.10 o superior. Para obtener más información acerca de los encabezados de control de versiones, vea Control de versiones de la administración del servicio.

El formato del cuerpo de la solicitud es el siguiente:

<?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>

En la tabla siguiente se describen los elementos del cuerpo de la solicitud.

 

Nombre de elemento

Descripción

ServiceName

Requerido. Especifica el nombre del servicio en la nube. Este nombre debe ser único dentro de Azure. Este nombre es el nombre del prefijo DNS que se utiliza para tener acceso al servicio. Para comprobar la disponibilidad de un nombre, puede utilizar Comprobar disponibilidad del nombre del servicio en la nube.

Etiqueta

Requerido. Especifica el identificador codificado en base 64 del servicio en la nube. El identificador puede tener una longitud máxima de 100 caracteres. La etiqueta se puede usar con fines de seguimiento.

Descripción

Opcional. Especifica la descripción del servicio en la nube. La descripción puede contener un máximo de 1024 caracteres.

Ubicación

Es necesario si AffinityGroup no se especifica. Especifica la ubicación en la que se crea el servicio en la nube.

Debe especificar Location o AffinityGroup, pero no ambos. Para ver las ubicaciones disponibles, puede utilizar Enumerar ubicaciones.

AffinityGroup

Es necesario si Location no se especifica. Especifica el nombre de un grupo de afinidad existente que está asociado a la suscripción. Debe especificar Location o AffinityGroup, pero no ambos. Para ver los grupos de afinidad disponibles, puede utilizar Enumerar grupos de afinidad.

Nombre

Opcional. Especifica el nombre de una propiedad de servicio en la nube extendida. El nombre puede tener una longitud máxima de 64 caracteres, solo son válidos los caracteres alfanuméricos y caracteres de subrayado, y debe comenzar por una letra. Cada propiedad extendida debe tener tanto un nombre como un valor definidos. Puede definir 50 propiedades extendidas, como máximo.

El elemento Name solamente se encuentra disponible si utiliza la versión 01.03.12 o versiones posteriores.

Valor

Opcional. Especifica el valor de una propiedad de servicio en la nube extendida. El valor de la propiedad extendida puede tener una longitud máxima de 255 caracteres.

El elemento Value solamente se encuentra disponible si utiliza la versión 01.03.12 o versiones posteriores.

ReverseDnsFqdn

Opcional. Especifica la dirección DNS en la que se resuelve la dirección IP del servicio en la nube cuando se envía una consulta mediante una consulta de DNS inversa.

El elemento ReverseDnsFqdn solamente se encuentra disponible si utiliza la versión 01.06.14 o versiones posteriores.

La respuesta incluye un código de estado HTTP y un conjunto de encabezados de respuesta.

Una operación correcta devuelve el código de estado 201 (Creado). Para obtener información acerca de los códigos de estado, vea Estado y códigos de error de administración del servicio.

La respuesta para esta operación incluye los encabezados siguientes. La respuesta también puede incluir otros encabezados HTTP estándar. Todos los encabezados estándar cumplen la especificación del protocolo HTTP/1.1.

 

Encabezado de respuesta Descripción

x-ms-request-id

Valor que identifica de forma exclusiva una solicitud realizada ante el servicio de administración. Para una operación asincrónica, puede llamar a Obtener estado de la operación con el valor del encabezado para determinar si se ha completado la operación, ha generado un error o aún está en curso.

También puede usar los recursos siguientes para crear un nuevo servicio en la nube:

Next step:

Después de crear un servicio en la nube, el paso siguiente consiste en crear una implementación. Para obtener más información, vea lo siguiente:

En el ejemplo de aplicación de consola siguiente se muestra cómo crear un nuevo servicio en la nube. Reemplace los valores variables siguientes:

  • Thumbprint – con la huella digital de un certificado de administración de la suscripción

  • SubscriptionId – con el identificador de suscripción que ha obtenido en el Portal de administración

  • ServiceName – con el nombre que desea usar para el nuevo servicio en la nube

  • Location – con la ubicación geográfica donde desea situar el servicio en la nube



    noteNota
    Puede usar List Locations para obtener la ubicación adecuada.


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));
    }
  }
}

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios
Mostrar:
© 2015 Microsoft