Azure Blob Storage と Visual Studio 接続済みサービスの概要 (ASP.NET)Get started with Azure blob storage and Visual Studio Connected Services (ASP.NET)

ヒント

Microsoft Azure ストレージ エクスプローラーを使用した Azure Blob Storage リソースの管理Manage Azure Blob Storage resources with Microsoft Azure Storage Explorer

Microsoft Azure ストレージ エクスプローラーは、Azure Blob Storage のリソースを管理できる Microsoft 製の無料のスタンドアロン アプリです。Microsoft Azure Storage Explorer is a free, standalone app from Microsoft that enables you to manage Azure Blob Storage resources. Microsoft Azure ストレージ エクスプローラーを使用して、BLOB コンテナーおよび BLOB を視覚的に作成、読み取り、更新、削除できるほか、BLOB コンテナーおよび BLOB へのアクセスを管理できます。Using Microsoft Azure Storage Explorer, you can visually create, read, update, and delete blob containers and blobs, as well as manage access to your blobs containers and blobs.

概要Overview

Azure Blob Storage は、非構造化データをクラウド内にオブジェクト/BLOB として格納するサービスです。Azure blob storage is a service that stores unstructured data in the cloud as objects/blobs. Blob Storage は、ドキュメント、メディア ファイル、アプリケーション インストーラーなど、任意の種類のテキスト データやバイナリ データを格納できます。Blob storage can store any type of text or binary data, such as a document, media file, or application installer. Blob Storage は、オブジェクト ストレージとも呼ばれます。Blob storage is also referred to as object storage.

このチュートリアルでは、Azure Blob Storage を使用していくつかの一般的なシナリオの ASP.NET コードを記述する方法を示します。This tutorial shows how to write ASP.NET code for some common scenarios using Azure blob storage. シナリオには、BLOB コンテナーの作成や、BLOB のアップロード、一覧表示、ダウンロード、および削除が含まれます。Scenarios include creating a blob container, and uploading, listing, downloading, and deleting blobs.

前提条件Prerequisites

BLOB ストレージとはWhat is Blob Storage?

Azure Blob Storage は、HTTP または HTTPS 経由で世界中のどこからでもアクセスできるテキストやバイナリ データなど、大量の非構造化オブジェクト データを格納するためのサービスです。Azure Blob storage is a service for storing large amounts of unstructured object data, such as text or binary data, that can be accessed from anywhere in the world via HTTP or HTTPS. BLOB ストレージを使用すると、データを一般に公開することも、アプリケーション データを公開せずに格納することもできます。You can use Blob storage to expose data publicly to the world, or to store application data privately.

BLOB ストレージの一般的な用途には、次のようなものがあります。Common uses of Blob storage include:

  • 画像またはドキュメントをブラウザーに直接配信するServing images or documents directly to a browser
  • 分散アクセス用にファイルを格納するStoring files for distributed access
  • ビデオおよびオーディオをストリーミング配信するStreaming video and audio
  • バックアップと復元、障害復旧、アーカイブのためのデータを格納するStoring data for backup and restore, disaster recovery, and archiving
  • 内部設置型サービスまたは Azure ホステッド サービスで分析する データを格納するStoring data for analysis by an on-premises or Azure-hosted service

Blob service の概念Blob service concepts

Blob service には、次のコンポーネントが含まれます。The Blob service contains the following components:

BLOB アーキテクチャ

  • ストレージ アカウント : Azure Storage にアクセスする場合には必ず、ストレージ アカウントを使用します。Storage Account: All access to Azure Storage is done through a storage account. このストレージ アカウントは、汎用ストレージ アカウントにすることも、オブジェクト/BLOB の格納に特化した BLOB ストレージ アカウントにすることもできます。This storage account can be a General-purpose storage account or a Blob storage account which is specialized for storing objects/blobs. 詳細については、「Azure ストレージ アカウントについて」を参照してください。See About Azure storage accounts for more information.
  • コンテナー : コンテナーは、BLOB のセットをグループ化します。Container: A container provides a grouping of a set of blobs. すべての BLOB はコンテナーに格納されている必要があります。All blobs must be in a container. 1 つのアカウントに格納できるコンテナーの数は無制限です。An account can contain an unlimited number of containers. また、1 つのコンテナーに保存できる BLOB の数も無制限です。A container can store an unlimited number of blobs. コンテナー名は小文字で入力する必要があります。Note that the container name must be lowercase.
  • BLOB : 任意の種類およびサイズのファイルです。Blob: A file of any type and size. Azure ストレージが提供する BLOB には、ブロック BLOB とページ BLOB (ディスク)、追加 BLOB の 3 種類があります。Azure Storage offers three types of blobs: block blobs, page blobs, and append blobs.

    ブロック BLOB は、ドキュメントやメディア ファイルなどのテキストまたはバイナリ ファイルを格納するのに最適です。Block blobs are ideal for storing text or binary files, such as documents and media files. 追加 BLOB はブロック BLOB と同様にブロックで構成されますが、追加操作用に最適化されているので、ログ記録シナリオで役立ちます。Append blobs are similar to block blobs in that they are made up of blocks, but they are optimized for append operations, so they are useful for logging scenarios. 1 つのブロック BLOB は、100 MB までのブロックを最大 50,000 個まで含めることができます。合計サイズは 4.75 TB を少し上回ります (100 MB x 50,000)。A single block blob can contain up to 50,000 blocks of up to 100 MB each, for a total size of slightly more than 4.75 TB (100 MB X 50,000). 1 つの追加 BLOB は、4 MB までのブロックを最大 50,000 個まで含めることができます。合計サイズは 195 GB を少し上回ります (4 MB x 50,000)。A single append blob can contain up to 50,000 blocks of up to 4 MB each, for a total size of slightly more than 195 GB (4 MB X 50,000).

    ページ BLOB は最大 1 TB のサイズにすることができます。読み取り/書き込み操作を頻繁に実行する場合はこの BLOB が効率的です。Page blobs can be up to 1 TB in size, and are more efficient for frequent read/write operations. Azure の仮想マシンでは、ページ BLOB を OS とデータ ディスクとして使用します。Azure Virtual Machines use page blobs as OS and data disks.

    コンテナーと BLOB の名前付け規則については、「 コンテナー、BLOB、およびメタデータの名前付けおよび参照」を参照してください。For details about naming containers and blobs, see Naming and Referencing Containers, Blobs, and Metadata.

Azure のストレージ アカウントの作成Create an Azure storage account

最初の Azure ストレージ アカウントを作成する最も簡単な方法は、Azure Portal を利用することです。The easiest way to create your first Azure storage account is by using the Azure Portal. 詳細については、「 ストレージ アカウントの作成」を参照してください。To learn more, see Create a storage account.

Azure Storage アカウントは、Azure PowerShellAzure CLI、または .NET 用ストレージ リソース プロバイダー クライアント ライブラリを使用して作成することもできます。You can also create an Azure storage account by using Azure PowerShell, Azure CLI, or the Storage Resource Provider Client Library for .NET.

開発環境を設定するSet up the development environment

このセクションでは、ASP.NET MVC アプリの作成、接続済みサービスの接続の追加、コントローラーの追加、必要な名前空間ディレクティブの指定など、開発環境の設定方法について説明します。This section walks you setting up your development environment, including creating an ASP.NET MVC app, adding a Connected Services connection, adding a controller, and specifying the required namespace directives.

ASP.NET MVC アプリ プロジェクトを作成するCreate an ASP.NET MVC app project

  1. Visual Studio を開きます。Open Visual Studio.

  2. メイン メニューで、[ファイル]、[新規作成]、[プロジェクト] の順に選択します。Select File->New->Project from the main menu

  3. [新しいプロジェクト] ダイアログ ボックスで、次の図で強調表示されているようにオプションを指定します。On the New Project dialog, specify the options as highlighted in the following figure:

    ASP.NET プロジェクトの作成

  4. [OK]を選択します。Select OK.

  5. [新しい ASP.NET プロジェクト] ダイアログ ボックスで、次の図で強調表示されているようにオプションを指定します。On the New ASP.NET Project dialog, specify the options as highlighted in the following figure:

    MVC の指定

  6. [OK]を選択します。Select OK.

接続済みサービスを使用して Azure ストレージ アカウントに接続するUse Connected Services to connect to an Azure storage account

  1. ソリューション エクスプローラーでプロジェクトを右クリックし、コンテキスト メニューで [追加]、[接続済みサービス] の順に選択します。In the Solution Explorer, right-click the project, and from the context menu, select Add->Connected Service.

  2. [接続済みサービスの追加] ダイアログで [Azure Storage] を選択し、[構成] を選択します。On the Add Connected Service dialog, select Azure Storage, and then select Configure.

    [接続済みサービス] ダイアログ

  3. [Azure Storage] ダイアログで目的の Azure ストレージ アカウントを選択し、[追加] を選択します。On the Azure Storage dialog, select the desired Azure storage account with which you want to work, and select Add.

MVC コントローラーを作成するCreate an MVC controller

  1. ソリューション エクスプローラーコントローラーを右クリックし、コンテキスト メニューで [追加]、[コントローラー] の順に選択します。In the Solution Explorer, right-click Controllers, and, from the context menu, select Add->Controller.

    ASP.NET MVC アプリケーションへのコントローラーの追加

  2. [スキャフォールディングの追加] ダイアログ ボックスで [MVC 5 コントローラー - 空] を選択し、[追加] を選択します。On the Add Scaffold dialog, select MVC 5 Controller - Empty, and select Add.

    MVC コントローラーの種類を指定する

  3. [コントローラーの追加] ダイアログで、コントローラーに BlobsController という名前を付けて、[追加] を選択します。On the Add Controller dialog, name the controller BlobsController, and select Add.

    MVC コントローラー指定

  4. 次の using ディレクティブを BlobsController.cs ファイルに追加します。Add the following using directives to the BlobsController.cs file:

    using Microsoft.Azure;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.Storage.Auth;
    using Microsoft.WindowsAzure.Storage.Blob;
    

BLOB コンテナーを作成するCreate a blob container

BLOB コンテナーとは、BLOB とフォルダーの入れ子になった階層です。A blob container is a nested hierarchy of blobs and folders. 次の手順では、BLOB コンテナーを作成する方法を説明します。The following steps illustrate how to create a blob container:

注意

このセクションのコードは、「開発環境を設定する」の手順を完了していることを前提にしています。The code in this section assumes that you have completed the steps in the section, Set up the development environment.

  1. BlobsController.cs ファイルを開きます。Open the BlobsController.cs file.

  2. ActionResult を返す CreateBlobContainer というメソッドを追加します。Add a method called CreateBlobContainer that returns an ActionResult.

    public ActionResult CreateBlobContainer()
    {
        // The code in this section goes here.
    
        return View();
    }
    
  3. CreateBlobContainer メソッド内で、ストレージ アカウント情報を表す CloudStorageAccount オブジェクトを取得します。Within the CreateBlobContainer method, get a CloudStorageAccount object that represents your storage account information. 次のコードを使用して、Azure サービス構成からストレージ接続文字列とストレージ アカウント情報を取得できます。Use the following code to get the storage connection string and storage account information from the Azure service configuration. (<storage-account-name> はアクセスする Azure ストレージ アカウントの名前に変更します)。(Change <storage-account-name> to the name of the Azure storage account you're accessing.)

    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
       CloudConfigurationManager.GetSetting("<storage-account-name>_AzureStorageConnectionString"));
    
  4. BLOB サービス クライアントを表す CloudBlobClient オブジェクトを取得します。Get a CloudBlobClient object represents a blob service client.

    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    
  5. 目的の BLOB コンテナー名への参照を表す CloudBlobContainer オブジェクトを取得します。Get a CloudBlobContainer object that represents a reference to the desired blob container name. CloudBlobClient.GetContainerReference メソッドでは、Blob Storage ストレージに対する要求は行われません。The CloudBlobClient.GetContainerReference method does not make a request against blob storage. BLOB コンテナーが存在するかどうかにかかわらず、参照が返されます。The reference is returned whether or not the blob container exists.

    CloudBlobContainer container = blobClient.GetContainerReference("test-blob-container");
    
  6. まだない場合は、CloudBlobContainer.CreateIfNotExists メソッドを呼び出して、コンテナーを作成します。Call the CloudBlobContainer.CreateIfNotExists method to create the container if it does not yet exist. CloudBlobContainer.CreateIfNotExists メソッドでは、コンテナーが存在せず、正常に作成された場合は true が返されます。The CloudBlobContainer.CreateIfNotExists method returns true if the container does not exist, and is successfully created. それ以外の場合は、false が返されます。Otherwise, false is returned.

    ViewBag.Success = container.CreateIfNotExists();
    
  7. ViewBag を BLOB コンテナーの名前に変更します。Update the ViewBag with the name of the blob container.

    ViewBag.BlobContainerName = container.Name;
    
  8. ソリューション エクスプローラー[ビュー] フォルダーを展開し、[BLOB] を右クリックし、コンテキスト メニューで [追加]、[ビュー] の順に選択します。In the Solution Explorer, expand the Views folder, right-click Blobs, and from the context menu, select Add->View.

  9. [ビューの追加] ダイアログで、ビューの名前として CreateBlobContainer と入力し、[追加] を選択します。On the Add View dialog, enter CreateBlobContainer for the view name, and select Add.

  10. CreateBlobContainer.cshtml を開き、次のコード スニペットのように変更します。Open CreateBlobContainer.cshtml, and modify it so that it looks like the following code snippet:

    @{
        ViewBag.Title = "Create Blob Container";
    }
    
    <h2>Create Blob Container results</h2>
    
    Creation of @ViewBag.BlobContainerName @(ViewBag.Success == true ? "succeeded" : "failed")
    
  11. ソリューション エクスプローラーで、[ビュー]、[共有] フォルダーを順に展開し、_Layout.cshtml を開きます。In the Solution Explorer, expand the Views->Shared folder, and open _Layout.cshtml.

  12. 最後の Html.ActionLink の後に、次の Html.ActionLink を追加します。After the last Html.ActionLink, add the following Html.ActionLink:

    <li>@Html.ActionLink("Create blob container", "CreateBlobContainer", "Blobs")</li>
    
  13. アプリケーションを実行して [BLOB コンテナーの作成] を選択し、次のスクリーン ショットと同様の結果が表示されることを確認します。Run the application, and select Create Blob Container to see results similar to the following screen shot:

    BLOB コンテナーを作成する

    前述したように、CloudBlobContainer.CreateIfNotExists メソッドは、コンテナーが存在しないため作成された場合にのみ true を返します。As mentioned previously, the CloudBlobContainer.CreateIfNotExists method returns true only when the container doesn't exist and is created. そのため、コンテナーが存在するときにアプリを実行した場合、メソッドは false を返します。Therefore, if you run the app when the container exists, the method returns false. アプリを複数回実行するには、アプリを再実行する前にコンテナーを削除する必要があります。To run the app multiple times, you must delete the container before running the app again. コンテナーを削除するには、CloudBlobContainer.Delete メソッドを使用します。Deleting the container can be done via the CloudBlobContainer.Delete method. Azure Portal または Microsoft Azure ストレージ エクスプローラーを使用してコンテナーを削除することもできます。You can also delete the container using the Azure portal or the Microsoft Azure Storage Explorer.

BLOB コンテナーに BLOB をアップロードするUpload a blob into a blob container

BLOB コンテナーを作成したら、そのコンテナーにファイルをアップロードできます。Once you've created a blob container, you can upload files into that container. このセクションでは、ローカル ファイルを BLOB コンテナーにアップロードする手順を説明します。This section walks you through uploading a local file to a blob container. この手順では、test-blob-container という名前の BLOB コンテナーを作成していることを前提とします。The steps assume you've created a blob container named test-blob-container.

注意

このセクションのコードは、「開発環境を設定する」の手順を完了していることを前提にしています。The code in this section assumes that you have completed the steps in the section, Set up the development environment.

  1. BlobsController.cs ファイルを開きます。Open the BlobsController.cs file.

  2. EmptyResult を返す UploadBlob というメソッドを追加します。Add a method called UploadBlob that returns an EmptyResult.

    public EmptyResult UploadBlob()
    {
        // The code in this section goes here.
    
        return new EmptyResult();
    }
    
  3. UploadBlob メソッド内で、ストレージ アカウント情報を表す CloudStorageAccount オブジェクトを取得します。Within the UploadBlob method, get a CloudStorageAccount object that represents your storage account information. 次のコードを使用して、Azure サービス構成からストレージ接続文字列とストレージ アカウントの情報を取得します (<storage-account-name> をアクセス対象の Azure ストレージ アカウントの名前に変更してください)。Use the following code to get the storage connection string and storage account information from the Azure service configuration: (Change <storage-account-name> to the name of the Azure storage account you're accessing.)

    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
       CloudConfigurationManager.GetSetting("<storage-account-name>_AzureStorageConnectionString"));
    
  4. BLOB サービス クライアントを表す CloudBlobClient オブジェクトを取得します。Get a CloudBlobClient object represents a blob service client.

    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    
  5. BLOB コンテナー名への参照を表す CloudBlobContainer オブジェクトを取得します。Get a CloudBlobContainer object that represents a reference to the blob container name.

    CloudBlobContainer container = blobClient.GetContainerReference("test-blob-container");
    
  6. 前述のように、Azure Storage ではさまざまな種類の BLOB がサポートされています。As explained earlier, Azure storage supports different blob types. ページ BLOB への参照を取得するには、CloudBlobContainer.GetPageBlobReference メソッドを呼び出します。To retrieve a reference to a page blob, call the CloudBlobContainer.GetPageBlobReference method. ブロック BLOB への参照を取得するには、CloudBlobContainer.GetBlockBlobReference メソッドを呼び出します。To retrieve a reference to a block blob, call the CloudBlobContainer.GetBlockBlobReference method. 通常は、ブロック BLOB を使用することをお勧めします。Usually, block blob is the recommended type to use. (* を、アップロードされたときに BLOB に付ける名前に変更します)。(Change * to the name you want to give the blob once uploaded.)

    CloudBlockBlob blob = container.GetBlockBlobReference(<blob-name>);
    
  7. BLOB の参照を取得したら、BLOB 参照オブジェクトの UploadFromStream メソッドを呼び出すことによって、データの任意のストリームを BLOB にアップロードできます。Once you have a blob reference, you can upload any data stream to it by calling the blob reference object's UploadFromStream method. UploadFromStream メソッドにより、BLOB が存在しない場合は作成され、存在する場合は上書きされます。The UploadFromStream method creates the blob if it doesn't exist, or overwrites it if it does exist. (<file-to-upload> を、アップロードするファイルへの完全修飾パスに変更します)(Change <file-to-upload> to a fully qualified path to the file you want to upload.)

    using (var fileStream = System.IO.File.OpenRead(<file-to-upload>))
    {
        blob.UploadFromStream(fileStream);
    }
    
  8. ソリューション エクスプローラー[ビュー] フォルダーを展開し、[BLOB] を右クリックし、コンテキスト メニューで [追加]、[ビュー] の順に選択します。In the Solution Explorer, expand the Views folder, right-click Blobs, and from the context menu, select Add->View.

  9. ソリューション エクスプローラーで、[ビュー]、[共有] フォルダーを順に展開し、_Layout.cshtml を開きます。In the Solution Explorer, expand the Views->Shared folder, and open _Layout.cshtml.

  10. 最後の Html.ActionLink の後に、次の Html.ActionLink を追加します。After the last Html.ActionLink, add the following Html.ActionLink:

    <li>@Html.ActionLink("Upload blob", "UploadBlob", "Blobs")</li>
    
  11. アプリケーションを実行し、[BLOB のアップロード] を選択します。Run the application, and select Upload blob.

BLOB コンテナー内の BLOB を一覧表示する」セクションで、BLOB コンテナー内の BLOB を一覧表示する方法について説明します。The section - List the blobs in a blob container - illustrates how to list the blobs in a blob container.

BLOB コンテナー内の BLOB を一覧表示するList the blobs in a blob container

このセクションでは、BLOB コンテナー内の BLOB を一覧表示する方法について説明します。This section illustrates how to list the blobs in a blob container. サンプル コードでは、セクション「BLOB コンテナーを作成する」で作成された test-blob-container を参照します。The sample code references the test-blob-container created in the section, Create a blob container.

注意

このセクションのコードは、「開発環境を設定する」の手順を完了していることを前提にしています。The code in this section assumes that you have completed the steps in the section, Set up the development environment.

  1. BlobsController.cs ファイルを開きます。Open the BlobsController.cs file.

  2. ActionResult を返す ListBlobs というメソッドを追加します。Add a method called ListBlobs that returns an ActionResult.

    public ActionResult ListBlobs()
    {
        // The code in this section goes here.
    
        return View();
    }
    
  3. ListBlobs メソッド内で、ストレージ アカウント情報を表す CloudStorageAccount オブジェクトを取得します。Within the ListBlobs method, get a CloudStorageAccount object that represents your storage account information. 次のコードを使用して、Azure サービス構成からストレージ接続文字列とストレージ アカウントの情報を取得します (<storage-account-name> をアクセス対象の Azure ストレージ アカウントの名前に変更してください)。Use the following code to get the storage connection string and storage account information from the Azure service configuration: (Change <storage-account-name> to the name of the Azure storage account you're accessing.)

    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
       CloudConfigurationManager.GetSetting("<storage-account-name>_AzureStorageConnectionString"));
    
  4. BLOB サービス クライアントを表す CloudBlobClient オブジェクトを取得します。Get a CloudBlobClient object represents a blob service client.

    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    
  5. BLOB コンテナー名への参照を表す CloudBlobContainer オブジェクトを取得します。Get a CloudBlobContainer object that represents a reference to the blob container name.

    CloudBlobContainer container = blobClient.GetContainerReference("test-blob-container");
    
  6. BLOB コンテナー内の BLOB を一覧表示するには、CloudBlobContainer.ListBlobs メソッドを使います。To list the blobs in a blob container, use the CloudBlobContainer.ListBlobs method. CloudBlobContainer.ListBlobs メソッドは、CloudBlockBlobCloudPageBlob、または CloudBlobDirectory オブジェクトにキャストする IListBlobItem オブジェクトを返します。The CloudBlobContainer.ListBlobs method returns an IListBlobItem object that you cast to a CloudBlockBlob, CloudPageBlob, or CloudBlobDirectory object. 次のコード スニペットでは、BLOB コンテナー内のすべての BLOB を列挙します。The following code snippet enumerates all the blobs in a blob container. 各 BLOB がその型に基づいて適切なオブジェクトにキャストされ、その名前 (または、CloudBlobDirectory の場合は URI) が一覧に追加されます。Each blob is cast to the appropriate object based on its type, and its name (or URI in the case of a CloudBlobDirectory) is added to a list.

    List<string> blobs = new List<string>();
    
    foreach (IListBlobItem item in container.ListBlobs(null, false))
    {
        if (item.GetType() == typeof(CloudBlockBlob))
        {
            CloudBlockBlob blob = (CloudBlockBlob)item;
            blobs.Add(blob.Name);
        }
        else if (item.GetType() == typeof(CloudPageBlob))
        {
            CloudPageBlob blob = (CloudPageBlob)item;
            blobs.Add(blob.Name);
        }
        else if (item.GetType() == typeof(CloudBlobDirectory))
        {
            CloudBlobDirectory dir = (CloudBlobDirectory)item;
            blobs.Add(dir.Uri.ToString());
        }
    }
    
    return View(blobs);
    

    BLOB コンテナーには BLOB だけでなく、ディレクトリを含めることもできます。In addition to blobs, blob containers can contain directories. 次のような階層の test-blob-container いう BLOB コンテナーがあるとします。Let's suppose you have a blob container called test-blob-container with the following hierarchy:

     foo.png
     dir1/bar.png
     dir2/baz.png
    

    前のコード例を使用すると、BLOB 文字列リストには、次のような値が含まれます。Using the preceding code example, the blobs string list contains values similar to the following:

     foo.png
     <storage-account-url>/test-blob-container/dir1
     <storage-account-url>/test-blob-container/dir2
    

    ご覧のように、リストには最上位のエンティティのみが含まれ、入れ子になったエンティティ (bar.pngbaz.png) は含まれていません。As you can see, the list includes only the top-level entities; not the nested ones (bar.png and baz.png). BLOB コンテナー内のすべてのエンティティを一覧表示するには、CloudBlobContainer.ListBlobs メソッドを呼び出して、useFlatBlobListing パラメーターに true を渡す必要があります。To list all the entities within a blob container, you must call the CloudBlobContainer.ListBlobs method and pass true for the useFlatBlobListing parameter.

    ...
    foreach (IListBlobItem item in container.ListBlobs(useFlatBlobListing:true))
    ...
    

    useFlatBlobListing パラメーターを true に設定すると、BLOB コンテナー内のすべてのエンティティのフラットな一覧が返され、次の結果が返されます。Setting the useFlatBlobListing parameter to true returns a flat listing of all entities in the blob container, and yields the following results:

     foo.png
     dir1/bar.png
     dir2/baz.png
    
  7. ソリューション エクスプローラー[ビュー] フォルダーを展開し、[BLOB] を右クリックし、コンテキスト メニューで [追加]、[ビュー] の順に選択します。In the Solution Explorer, expand the Views folder, right-click Blobs, and from the context menu, select Add->View.

  8. [ビューの追加] ダイアログで、ビューの名前として ListBlobs と入力し、[追加] を選択します。On the Add View dialog, enter ListBlobs for the view name, and select Add.

  9. ListBlobs.cshtml を開き、次のコード スニペットのように変更します。Open ListBlobs.cshtml, and modify it so that it looks like the following code snippet:

    @model List<string>
    @{
        ViewBag.Title = "List blobs";
    }
    
    <h2>List blobs</h2>
    
    <ul>
        @foreach (var item in Model)
        {
        <li>@item</li>
        }
    </ul>
    
  10. ソリューション エクスプローラーで、[ビュー]、[共有] フォルダーを順に展開し、_Layout.cshtml を開きます。In the Solution Explorer, expand the Views->Shared folder, and open _Layout.cshtml.

  11. 最後の Html.ActionLink の後に、次の Html.ActionLink を追加します。After the last Html.ActionLink, add the following Html.ActionLink:

    <li>@Html.ActionLink("List blobs", "ListBlobs", "Blobs")</li>
    
  12. アプリケーションを実行して [List blobs (BLOB の一覧表示)] を選択し、次のスクリーン ショットと同様の結果が表示されることを確認します。Run the application, and select List blobs to see results similar to the following screen shot:

    BLOB の一覧

BLOB をダウンロードするDownload blobs

このセクションでは、BLOB をダウンロードし、ローカル ストレージに保存するか、または内容を文字列に読み込む方法を説明します。This section illustrates how to download a blob and either persist it to local storage or read the contents into a string. サンプル コードでは、セクション「BLOB コンテナーを作成する」で作成された test-blob-container を参照します。The sample code references the test-blob-container created in the section, Create a blob container.

  1. BlobsController.cs ファイルを開きます。Open the BlobsController.cs file.

  2. ActionResult を返す DownloadBlob というメソッドを追加します。Add a method called DownloadBlob that returns an ActionResult.

    public EmptyResult DownloadBlob()
    {
        // The code in this section goes here.
    
        return new EmptyResult();
    }
    
  3. DownloadBlob メソッド内で、ストレージ アカウント情報を表す CloudStorageAccount オブジェクトを取得します。Within the DownloadBlob method, get a CloudStorageAccount object that represents your storage account information. 次のコードを使用して、Azure サービス構成からストレージ接続文字列とストレージ アカウントの情報を取得します (<storage-account-name> をアクセス対象の Azure ストレージ アカウントの名前に変更してください)。Use the following code to get the storage connection string and storage account information from the Azure service configuration: (Change <storage-account-name> to the name of the Azure storage account you're accessing.)

    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
       CloudConfigurationManager.GetSetting("<storage-account-name>_AzureStorageConnectionString"));
    
  4. BLOB サービス クライアントを表す CloudBlobClient オブジェクトを取得します。Get a CloudBlobClient object represents a blob service client.

    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    
  5. BLOB コンテナー名への参照を表す CloudBlobContainer オブジェクトを取得します。Get a CloudBlobContainer object that represents a reference to the blob container name.

    CloudBlobContainer container = blobClient.GetContainerReference("test-blob-container");
    
  6. CloudBlobContainer.GetBlockBlobReference または CloudBlobContainer.GetPageBlobReference メソッドを呼び出して、BLOB 参照オブジェクトを取得します。Get a blob reference object by calling CloudBlobContainer.GetBlockBlobReference or CloudBlobContainer.GetPageBlobReference method. (<blob-name> をダウンロードする BLOB の名前に変更します)(Change <blob-name> to the name of the blob you are downloading.)

    CloudBlockBlob blob = container.GetBlockBlobReference(<blob-name>);
    
  7. BLOB をダウンロードするには、BLOB の種類に基づいて CloudBlockBlob.DownloadToStream または CloudPageBlob.DownloadToStream メソッドを使用します。To download a blob, use the CloudBlockBlob.DownloadToStream or CloudPageBlob.DownloadToStream method, depending on the blob type. 次のコード スニペットは、CloudBlockBlob.DownloadToStream メソッドを使用して、ローカル ファイルに保存されるストリーム オブジェクトに BLOB の内容を転送します (<local-file-name> を BLOB をダウンロードする場所を表す完全修飾ファイル名に変更します)。The following code snippet uses the CloudBlockBlob.DownloadToStream method to transfer a blob's contents to a stream object that is then persisted to a local file: (Change <local-file-name> to the fully qualified file name representing where you want the blob downloaded.)

    using (var fileStream = System.IO.File.OpenWrite(<local-file-name>))
    {
        blob.DownloadToStream(fileStream);
    }
    
  8. ソリューション エクスプローラーで、[ビュー]、[共有] フォルダーを順に展開し、_Layout.cshtml を開きます。In the Solution Explorer, expand the Views->Shared folder, and open _Layout.cshtml.

  9. 最後の Html.ActionLink の後に、次の Html.ActionLink を追加します。After the last Html.ActionLink, add the following Html.ActionLink:

    <li>@Html.ActionLink("Download blob", "DownloadBlob", "Blobs")</li>
    
  10. アプリケーションを実行し、[BLOB のダウンロード] を選択して、BLOB をダウンロードします。Run the application, and select Download blob to download the blob. CloudBlobContainer.GetBlockBlobReference メソッド呼び出しで指定された BLOB が、File.OpenWrite メソッド呼び出しで指定された場所にダウンロードされます。The blob specified in the CloudBlobContainer.GetBlockBlobReference method call downloads to the location you specify in the File.OpenWrite method call.

BLOB を削除するDelete blobs

次の手順では、BLOB を削除する方法を説明します。The following steps illustrate how to delete a blob:

注意

このセクションのコードは、「開発環境を設定する」の手順を完了していることを前提にしています。The code in this section assumes that you have completed the steps in the section, Set up the development environment.

  1. BlobsController.cs ファイルを開きます。Open the BlobsController.cs file.

  2. ActionResult を返す DeleteBlob というメソッドを追加します。Add a method called DeleteBlob that returns an ActionResult.

    public EmptyResult DeleteBlob()
    {
        // The code in this section goes here.
    
        return new EmptyResult();
    }
    
  3. ストレージ アカウント情報を表す CloudStorageAccount オブジェクトを取得します。Get a CloudStorageAccount object that represents your storage account information. 次のコードを使用して、Azure サービス構成からストレージ接続文字列とストレージ アカウントの情報を取得します (<storage-account-name> をアクセス対象の Azure ストレージ アカウントの名前に変更してください)。Use the following code to get the storage connection string and storage account information from the Azure service configuration: (Change <storage-account-name> to the name of the Azure storage account you're accessing.)

    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
       CloudConfigurationManager.GetSetting("<storage-account-name>_AzureStorageConnectionString"));
    
  4. BLOB サービス クライアントを表す CloudBlobClient オブジェクトを取得します。Get a CloudBlobClient object represents a blob service client.

    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    
  5. BLOB コンテナー名への参照を表す CloudBlobContainer オブジェクトを取得します。Get a CloudBlobContainer object that represents a reference to the blob container name.

    CloudBlobContainer container = blobClient.GetContainerReference("test-blob-container");
    
  6. CloudBlobContainer.GetBlockBlobReference または CloudBlobContainer.GetPageBlobReference メソッドを呼び出して、BLOB 参照オブジェクトを取得します。Get a blob reference object by calling CloudBlobContainer.GetBlockBlobReference or CloudBlobContainer.GetPageBlobReference method. (<blob-name> を、削除する BLOB の名前に変更します)(Change <blob-name> to the name of the blob you are deleting.)

    CloudBlockBlob blob = container.GetBlockBlobReference(<blob-name>);
        ```
    
    
  7. To delete a blob, use the Delete method.

    blob.Delete();
    
  8. ソリューション エクスプローラーで、[ビュー]、[共有] フォルダーを順に展開し、_Layout.cshtml を開きます。In the Solution Explorer, expand the Views->Shared folder, and open _Layout.cshtml.

  9. 最後の Html.ActionLink の後に、次の Html.ActionLink を追加します。After the last Html.ActionLink, add the following Html.ActionLink:

    <li>@Html.ActionLink("Delete blob", "DeleteBlob", "Blobs")</li>
    
  10. アプリケーションを実行し、[BLOB の削除] を選択して、CloudBlobContainer.GetBlockBlobReference メソッド呼び出しで指定された BLOB を削除します。Run the application, and select Delete blob to delete the blob specified in the CloudBlobContainer.GetBlockBlobReference method call.

次のステップNext steps

Azure でデータを格納するための追加のオプションについては、他の機能ガイドも参照してください。View more feature guides to learn about additional options for storing data in Azure.