Suppression d'un compte de stockage

 

Le Delete Storage Account l’opération asynchrone supprime le compte de stockage spécifié.

Le Delete Storage Account demande peut être spécifiée comme suit. Remplacez <subscription-id> par votre ID d’abonnement et <service-name> avec le nom du compte de stockage.

(Méthode)

URI de la demande

SUPPRIMER

https://management.core.windows.net/<subscription-id>/services/storageservices/<service-name>

Vous devez vous assurer que la demande est faite pour le service de gestion est sécurisée. Pour plus d'informations, consultez authentification des demandes de Service gestion.

Le tableau suivant décrit les en-têtes de demande.

En-tête de demande

Description

x-ms-version

Requis. Spécifie la version de l'opération à utiliser pour cette demande. La valeur de cet en-tête doit être définie sur 2011-06-01 ou une version ultérieure. Pour plus d'informations sur les en-têtes de contrôle de version, consultez Service Management version.

La réponse inclut un code d'état HTTP, un ensemble d'en-têtes de réponse et un corps de réponse.

Une opération réussie renvoie le code d'état 200 (OK). Pour plus d'informations sur les codes d'état, consultez état de gestion de Service et les Codes d'erreur.

La réponse pour cette opération inclut les en-têtes suivants. La réponse peut également inclure des en-têtes HTTP standard supplémentaires. Tous les en-têtes standards se conforment à la spécification du protocole HTTP/1.1http://go.microsoft.com/fwlink/?linkid=150478.

En-tête de réponse

Description

x-ms-request-id

Une valeur qui identifie de façon unique une demande adressée au service de gestion. Pour une opération asynchrone, vous pouvez appeler Obtenir l'état de l'opération avec la valeur de l'en-tête pour déterminer si l'opération est terminée, a échoué ou est toujours en cours.

Utilisez le Delete Storage Account opération de suppression d’un compte de stockage par nom. Les données stockées dans un compte de stockage supprimé ne peut pas être récupérées, et les noms de compte de stockage qui ont été supprimés peuvent être adoptées par d’autres utilisateurs.

Avant de supprimer un compte de stockage, vous devez d’abord supprimer toutes les Images de système d’exploitation, Images de machine virtuelle et disques qui sont trouvent dans le compte. Opérations asynchrones sont utilisées pour supprimer les artefacts à partir d’un compte de stockage. Vous pouvez utiliser la Obtenir l'état de l'opération opération pour vous assurer que les opérations sont terminées avant d’essayer de supprimer le compte de stockage. Il peut prendre jusqu'à 15 minutes pour toutes les opérations se termine avant de pouvoir supprimer le compte de stockage.

L’exemple de programme suivant prend l’identificateur d’abonnement, un empreinte numérique du certificat de gestion associée, la version de l’opération et un nom de compte de stockage et appelle le Delete Storage Account opération pour supprimer le compte de stockage nommé. Initialiser le Version constante avec une chaîne d’en-tête de version, SubscriptionId avec l’identificateur GUID de l’abonnement, Thumbprint avec la valeur de votre empreinte numérique du certificat gestion, et ServiceName avec le nom du compte de stockage doit être supprimé pour exécuter l’exemple de code.

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

public class Program
{
    // Set these constants with your values to run the sample.
    private const string Version = "2011-10-01";
    private const string Thumbprint = "management-certificate-thumbprint";
    private const string SubscriptionId = "subscription-id-guid";
    private const string ServiceName = "storage-account-name";

    /// <summary>
    /// Gets or sets the certificate that matches the Thumbprint value.
    /// </summary>
    private static X509Certificate2 Certificate { getset; }

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

            DeleteStorageAccount(SubscriptionId, ServiceName);
            Console.WriteLine("Storage Account {0} deleted.", ServiceName);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception caught in Main:");
            Console.WriteLine(ex.Message);
        }

        Console.Write("Press any key to continue:");
        Console.ReadKey();
    }

    /// <summary>
    /// Calls the Delete Storage Account operation in the Service Management
    /// REST API for the specified subscription and storage account name.
    /// Throws an ApplicationException on status code results other than OK.
    /// </summary>
    /// <param name="subscriptionId">The subscription identifier.</param>
    /// <param name="serviceName">The name of the storage account to delete.</param>
    private static void DeleteStorageAccount(
        string subscriptionId,
        string serviceName)
    {
        string uriFormat = "https://management.core.windows.net/{0}/services/storageservices/{1}";
        Uri uri = new Uri(String.Format(uriFormat, subscriptionId, serviceName));

        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
        request.Method = "DELETE";
        request.Headers.Add("x-ms-version", Version);
        request.ClientCertificates.Add(Certificate);
        request.ContentType = "application/xml";

        XDocument responseBody = null;
        HttpStatusCode statusCode = HttpStatusCode.Unused;
        HttpWebResponse response;
        try
        {
            response = (HttpWebResponse)request.GetResponse();
        }
        catch (WebException ex)
        {
            // GetResponse throws a WebException for 4XX and 5XX status codes
            response = (HttpWebResponse)ex.Response;
        }

        try
        {
            statusCode = response.StatusCode;
            if (response.ContentLength > 0)
            {
                using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
                {
                    responseBody = XDocument.Load(reader);
                }
            }
        }
        finally
        {
            response.Close();
        }

        if (!statusCode.Equals(HttpStatusCode.OK))
        {
            throw new ApplicationException(string.Format(
                "Call to {0} returned an error:{1}Status Code: {2} ({3}):{1}{4}",
                uri.ToString(),
                Environment.NewLine,
                (int)statusCode,
                statusCode,
                responseBody.ToString(SaveOptions.OmitDuplicateNamespaces)));
        }

        return;
    }

    /// <summary>
    /// Gets the certificate matching the thumbprint from the local store.
    /// Throws an ArgumentException if a matching certificate is not found.
    /// </summary>
    /// <param name="thumbprint">The thumbprint of the certificate to find.</param>
    /// <returns>The certificate with the specified thumbprint.</returns>
    private static X509Certificate2 GetCertificate(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));
    }
}

Cet exemple de programme génère des résultats similaires à ce qui suit :

Storage Account myexamplestorage1 deleted.
Press any key to continue:
Afficher: