.NET を使用して BLOB コンテナーを作成する

Azure Storage 内の BLOB はコンテナーにまとめられます。 BLOB をアップロードする前には、まずコンテナーを作成する必要があります。 この記事では、.NET 用の Azure Storage クライアント ライブラリを使ってコンテナーを作成する方法について説明します。

前提条件

  • この記事では、.NET 用の Azure Blob Storage クライアント ライブラリを操作するための設定が済んだプロジェクトが、既にあることを前提としています。 パッケージのインストール、using ディレクティブの追加、認可されたクライアント オブジェクトの作成など、プロジェクトの設定については、「Azure Blob Storage と .NET の作業を始める」をご覧ください。
  • 認可メカニズムには、BLOB コンテナーを作成するためのアクセス許可が必要です。 詳細については、次の REST API 操作の認可ガイダンスを参照してください。

コンテナーの名前付けについて

コンテナー名は、コンテナーまたはその BLOB をアドレス指定するために使用される一意の URI の一部になるため、有効な DNS 名である必要があります。 コンテナーに名前を付けるときは、次の規則に従います。

  • コンテナー名の長さは 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. という名前のルート コンテナーを 1 つ含めることができます。 ルート コンテナーは明示的に作成または削除する必要があります。

ルート コンテナーに格納されている BLOB は、ルート コンテナー名を指定せずに参照できます。 ルート コンテナーを使用すると、ストレージ アカウント階層の最上位レベルにある BLOB を参照できます。 たとえば、ルート コンテナー内に存在する BLOB は、次の方法で参照できます。

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

リソース

.NET 用 Azure Blob Storage クライアント ライブラリを使用したコンテナーの作成の詳細については、次のリソースを参照してください。

REST API の操作

Azure SDK for .NET には Azure REST API に基づいて構築されたライブラリが含まれるため、使い慣れた .NET パラダイムを通じて REST API 操作を利用できます。 コンテナーを作成するためのクライアント ライブラリ メソッドは、次の REST API 操作を使用します。

クライアント ライブラリのリソース