Создание контейнера BLOB-объектов с помощью .NET

Большие двоичные объекты в службе хранилища Azure упорядочиваются в контейнеры. Прежде чем вы сможете отправить большой двоичный объект, сперва необходимо создать контейнер. В этой статье приводятся сведения о создании и удалении контейнеров с помощью клиентской библиотеки службы хранилища Azure для .NET.

Предварительные требования

  • В этой статье предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для .NET. Дополнительные сведения о настройке проекта, включая установку пакета, добавление using директив и создание авторизованного клиентского объекта, см. в статье Начало работы с Хранилище BLOB-объектов Azure и .NET.
  • Механизм авторизации должен иметь разрешения на создание контейнера BLOB-объектов. Дополнительные сведения см. в руководстве по авторизации для следующей операции REST API:

Сведения об именовании контейнеров

Имя контейнера должно быть допустимым DNS-именем, поскольку оно является частью уникального URI, используемого для адресации контейнера или его больших двоичных объектов. При присвоении имени контейнеру следуйте нижеприведенным правилам:

  • Имена контейнеров могут содержать от 3 до 63 символов.
  • Имена контейнеров должны начинаться с буквы или цифры и могут содержать только строчные буквы, цифры и тире (-).
  • Последовательные тире не допускаются в именах контейнеров.

URI для ресурса контейнера имеет следующий формат:

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

Создание контейнера

Чтобы создать контейнер, вызовите один из следующих методов из BlobServiceClient класса :

Вы также можете создать контейнер, используя один из следующих методов из BlobContainerClient класса :

Указанные методы вызывают исключение в случаях, если контейнер с таким именем уже существует.

Контейнеры создаются для учетной записи хранилища немедленно. Нельзя вложить один контейнер в другой.

В следующем примере объект используется BlobServiceClient для асинхронного создания контейнера:

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

Создание корневого контейнера

Корневой контейнер является контейнером по умолчанию для вашей учетной записи хранилища. У каждой учетной записи хранения может быть один корневой контейнер, который должен называться $root. Корневой контейнер должен быть явным образом создан или удален.

Вы можете ссылаться на большой двоичный объект, хранящийся в корневом контейнере, не включая имя корневого контейнера. Корневой контейнер позволяет ссылаться на большой двоичный объект на верхнем уровне иерархии учетной записи хранения. К примеру, вы можете ссылаться на большой двоичный объект, находящийся в корневом контейнере, следующим образом:

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

В нижеприведенном примере корневой контейнер создается синхронно:

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

Ресурсы

Дополнительные сведения о создании контейнера с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для .NET см. в следующих ресурсах.

Операции REST API

Пакет Azure SDK для .NET содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы .NET. Методы клиентской библиотеки для создания контейнера используют следующую операцию REST API:

Ресурсы клиентской библиотеки