Criar um contentor de blobs com o .NET

Os blobs no Armazenamento do Azure estão organizados em contentores. Antes de poder carregar um blob, primeiro tem de criar um contentor. Este artigo mostra como criar contentores com a biblioteca de cliente do Armazenamento do Azure para .NET.

Pré-requisitos

  • Este artigo pressupõe que já tem um projeto configurado para funcionar com a biblioteca de cliente Armazenamento de Blobs do Azure para .NET. Para saber mais sobre como configurar o projeto, incluindo a instalação de pacotes, a adição using de diretivas e a criação de um objeto de cliente autorizado, veja Introdução ao Armazenamento de Blobs do Azure e .NET.
  • O mecanismo de autorização tem de ter permissões para criar um contentor de blobs. Para saber mais, veja a documentação de orientação de autorização para a seguinte operação da API REST:

Acerca da nomenclatura de contentores

Um nome de contentor tem de ser um nome DNS válido, uma vez que faz parte do URI exclusivo utilizado para abordar o contentor ou os respetivos blobs. Siga estas regras ao atribuir um nome a um contentor:

  • Os nomes dos contentores podem ter entre 3 e 63 carateres.
  • Os nomes dos contentores têm de começar com uma letra ou número e só podem conter letras minúsculas, números e o caráter de travessão (-).
  • Os carateres de travessão consecutivos não são permitidos em nomes de contentor.

O URI de um recurso de contentor é formatado da seguinte forma:

https://my-account-name.blob.core.windows.net/my-container-name

Criar um contentor

Para criar um contentor, chame um dos seguintes métodos da BlobServiceClient classe :

Também pode criar um contentor com um dos seguintes métodos da BlobContainerClient classe :

Estes métodos geram uma exceção se já existir um contentor com o mesmo nome.

Os contentores são criados imediatamente abaixo da conta de armazenamento. Não é possível aninhar um contentor abaixo de outro.

O exemplo seguinte utiliza um BlobServiceClient objeto para criar um contentor de forma assíncrona:

//-------------------------------------------------
// Create a container
//-------------------------------------------------
private static async Task<BlobContainerClient> CreateSampleContainerAsync(BlobServiceClient blobServiceClient)
{
    // Name the sample container based on new GUID to ensure uniqueness.
    // The container name must be lowercase.
    string containerName = "container-" + Guid.NewGuid();

    try
    {
        // Create the container
        BlobContainerClient container = await blobServiceClient.CreateBlobContainerAsync(containerName);

        if (await container.ExistsAsync())
        {
            Console.WriteLine("Created container {0}", container.Name);
            return container;
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine("HTTP error code {0}: {1}",
                            e.Status, e.ErrorCode);
        Console.WriteLine(e.Message);
    }

    return null;
}

Criar o contentor de raiz

Um contentor de raiz serve como um contentor predefinido para a sua conta de armazenamento. Cada conta de armazenamento pode ter um contentor de raiz, que tem de ter o nome $root. O contentor de raiz tem de ser explicitamente criado ou eliminado.

Pode referenciar um blob armazenado no contentor de raiz sem incluir o nome do contentor de raiz. O contentor de raiz permite-lhe referenciar um blob no nível superior da hierarquia da conta de armazenamento. Por exemplo, pode referenciar um blob que está no contentor de raiz da seguinte forma:

https://myaccount.blob.core.windows.net/default.html

O exemplo seguinte cria o contentor de raiz de forma síncrona:

//-------------------------------------------------
// Create root container
//-------------------------------------------------
private static void CreateRootContainer(BlobServiceClient blobServiceClient)
{
    try
    {
        // Create the root container or handle the exception if it already exists
        BlobContainerClient container =  blobServiceClient.CreateBlobContainer("$root");

        if (container.Exists())
        {
            Console.WriteLine("Created root container.");
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine("HTTP error code {0}: {1}",
                            e.Status, e.ErrorCode);
        Console.WriteLine(e.Message);
    }
}

Recursos

Para saber mais sobre como criar um contentor com a biblioteca de cliente Armazenamento de Blobs do Azure para .NET, veja os seguintes recursos.

Operações da API REST

O SDK do Azure para .NET contém bibliotecas que se baseiam na API REST do Azure, o que lhe permite interagir com operações da API REST através de paradigmas de .NET familiares. Os métodos da biblioteca de cliente para criar um contentor utilizam a seguinte operação da API REST:

Recursos da biblioteca de cliente