クイック スタート:.NET 用 Azure Blob Storage クライアント ライブラリ v12Quickstart: Azure Blob storage client library v12 for .NET

.NET 用 Azure Blob Storage クライアント ライブラリ v12 を使用してみましょう。Get started with the Azure Blob storage client library v12 for .NET. Azure Blob Storage は、Microsoft のクラウド用オブジェクト ストレージ ソリューションです。Azure Blob storage is Microsoft's object storage solution for the cloud. 手順に従ってパッケージをインストールし、基本タスクのコード例を試してみましょう。Follow steps to install the package and try out example code for basic tasks. Blob Storage は、テキスト データやバイナリ データなどの大量の非構造化データを格納するために最適化されています。Blob storage is optimized for storing massive amounts of unstructured data.

.NET 用 Azure Blob Storage クライアント ライブラリ v12 を使用すると、以下のことができます。Use the Azure Blob storage client library v12 for .NET to:

  • コンテナーを作成するCreate a container
  • Azure Storage へ BLOB をアップロードするUpload a blob to Azure Storage
  • コンテナー内のすべての BLOB を一覧表示するList all of the blobs in a container
  • ローカル コンピューターに BLOB をダウンロードするDownload the blob to your local computer
  • コンテナーを削除するDelete a container

その他のリソース:Additional resources:

注意

この記事で説明されている機能は、階層構造の名前空間を持つアカウントで使用できるようになりました。The features described in this article are now available to accounts that have a hierarchical namespace. 制限事項については、「Azure Data Lake Storage Gen2 で使用できる BLOB ストレージ機能」の記事を参照してください。To review limitations, see the Blob storage features available in Azure Data Lake Storage Gen2 article.

前提条件Prerequisites

設定Setting up

このセクションでは、.NET 用 Azure Blob Storage クライアント ライブラリ v12 を操作するためのプロジェクトの準備について説明します。This section walks you through preparing a project to work with the Azure Blob storage client library v12 for .NET.

プロジェクトを作成するCreate the project

BlobQuickstartV12 という名前の .NET Core アプリケーションを作成します。Create a .NET Core application named BlobQuickstartV12.

  1. コンソール ウィンドウ (cmd、PowerShell、Bash など) 上で、dotnet new コマンドを使用し、BlobQuickstartV12 という名前の新しいコンソール アプリを作成します。In a console window (such as cmd, PowerShell, or Bash), use the dotnet new command to create a new console app with the name BlobQuickstartV12. このコマンドにより、1 つのソース ファイルを使用する単純な "Hello World" C# プロジェクトが作成されます。Program.csThis command creates a simple "Hello World" C# project with a single source file: Program.cs.

    dotnet new console -n BlobQuickstartV12
    
  2. 新しく作成した BlobQuickstartV12 ディレクトリに切り替えます。Switch to the newly created BlobQuickstartV12 directory.

    cd BlobQuickstartV12
    
  3. BlobQuickstartV12 ディレクトリ内に、data という別のディレクトリを作成します。In side the BlobQuickstartV12 directory, create another directory called data. BLOB データ ファイルは、ここに作成され格納されます。This is where the blob data files will be created and stored.

    mkdir data
    

パッケージをインストールするInstall the package

まだアプリケーション ディレクトリにいる間に、dotnet add package コマンドを使用して、.NET 用の Azure Blob Storage クライアント ライブラリ パッケージをインストールします。While still in the application directory, install the Azure Blob storage client library for .NET package by using the dotnet add package command.

dotnet add package Azure.Storage.Blobs

アプリのフレームワークを設定するSet up the app framework

プロジェクト ディレクトリで次の操作を行います。From the project directory:

  1. ご使用のエディターで Program.cs ファイルを開きますOpen the Program.cs file in your editor
  2. Console.WriteLine("Hello World!"); ステートメントを削除しますRemove the Console.WriteLine("Hello World!"); statement
  3. using ディレクティブを追加しますAdd using directives
  4. 非同期コードをサポートするように Main メソッドの宣言を更新しますUpdate the Main method declaration to support async code

コードは次のとおりです。Here's the code:

using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System;
using System.IO;
using System.Threading.Tasks;

namespace BlobQuickstartV12
{
    class Program
    {
        static async Task Main()
        {
        }
    }
}

Azure Portal で資格情報をコピーするCopy your credentials from the Azure portal

サンプル アプリケーションから Azure Storage に対して要求を実行するときは、承認されている必要があります。When the sample application makes a request to Azure Storage, it must be authorized. 要求を承認するには、ストレージ アカウントの資格情報を接続文字列としてアプリケーションに追加します。To authorize a request, add your storage account credentials to the application as a connection string. 次の手順に従って、ストレージ アカウントの資格情報を表示します。View your storage account credentials by following these steps:

  1. Azure portal にサインインするSign in to the Azure portal.

  2. 自分のストレージ アカウントを探します。Locate your storage account.

  3. ストレージ アカウントの概要の [設定] セクションで、 [アクセス キー] を選択します。In the Settings section of the storage account overview, select Access keys. ここでは、アカウント アクセス キーと各キーの完全な接続文字列を表示できます。Here, you can view your account access keys and the complete connection string for each key.

  4. [Key1][接続文字列] の値を見つけ、 [コピー] ボタンを選択して接続文字列をコピーします。Find the Connection string value under key1, and select the Copy button to copy the connection string. すぐ後の手順で、接続文字列の値を環境変数に追加します。You will add the connection string value to an environment variable in the next step.

    Azure portal から接続文字列をコピーする方法を示すスクリーンショット

ストレージ接続文字列の構成Configure your storage connection string

接続文字列をコピーした後、アプリケーションを実行しているローカル マシンの新しい環境変数にそれを書き込みます。After you have copied your connection string, write it to a new environment variable on the local machine running the application. 環境変数を設定するには、コンソール ウィンドウを開いて、お使いのオペレーティング システムの手順に従います。To set the environment variable, open a console window, and follow the instructions for your operating system. <yourconnectionstring> は、実際の接続文字列に置き換えてください。Replace <yourconnectionstring> with your actual connection string.

WindowsWindows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Windows で環境変数を追加した後、コマンド ウィンドウの新しいインスタンスを開始する必要があります。After you add the environment variable in Windows, you must start a new instance of the command window.

LinuxLinux

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

macOSmacOS

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

プログラムの再起動Restart programs

環境変数を追加した後、環境変数の読み取りを必要とする実行中のプログラムをすべて再起動します。After you add the environment variable, restart any running programs that will need to read the environment variable. たとえば、続行する前に、ご使用の開発環境またはエディターを再起動します。For example, restart your development environment or editor before continuing.

オブジェクト モデルObject model

Azure Blob Storage は、大量の非構造化データを格納するために最適化されています。Azure Blob storage is optimized for storing massive amounts of unstructured data. 非構造化データとは、特定のデータ モデルや定義に従っていないデータであり、テキスト データやバイナリ データなどがあります。Unstructured data is data that does not adhere to a particular data model or definition, such as text or binary data. Blob Storage には、3 種類のリソースがあります。Blob storage offers three types of resources:

  • ストレージ アカウントThe storage account
  • ストレージ アカウント内のコンテナーA container in the storage account
  • コンテナー内の BLOBA blob in the container

次の図に、これらのリソースの関係を示します。The following diagram shows the relationship between these resources.

Blob Storage のアーキテクチャ図

これらのリソースとやり取りするには、以下の .NET クラスを使用します。Use the following .NET classes to interact with these resources:

  • BlobServiceClient:BlobServiceClient クラスを使用して、Azure Storage リソースと BLOB コンテナーを操作できます。BlobServiceClient: The BlobServiceClient class allows you to manipulate Azure Storage resources and blob containers.
  • BlobContainerClient:BlobContainerClient クラスを使用して、Azure Storage コンテナーとその BLOB を操作できます。BlobContainerClient: The BlobContainerClient class allows you to manipulate Azure Storage containers and their blobs.
  • BlobClient:BlobClient クラスを使用して、Azure Storage BLOB を操作できます。BlobClient: The BlobClient class allows you to manipulate Azure Storage blobs.
  • BlobDownloadInfo:BlobDownloadInfo クラスは、BLOB のダウンロードによって返されるプロパティとコンテンツを表します。BlobDownloadInfo: The BlobDownloadInfo class represents the properties and content returned from downloading a blob.

コード例Code examples

以下のサンプル コード スニペットは、.NET 用 Azure Blob Storage クライアント ライブラリを使用して以下を実行する方法を示します。These example code snippets show you how to perform the following with the Azure Blob storage client library for .NET:

接続文字列を取得するGet the connection string

以下のコードでは、「ストレージ接続文字列の構成」セクションで作成した環境変数から、ストレージ アカウントに対する接続文字列を取得します。The code below retrieves the connection string for the storage account from the environment variable created in the Configure your storage connection string section.

このコードを Main メソッド内に追加します。Add this code inside the Main method:

Console.WriteLine("Azure Blob storage v12 - .NET quickstart sample\n");

// Retrieve the connection string for use with the application. The storage
// connection string is stored in an environment variable on the machine
// running the application called AZURE_STORAGE_CONNECTION_STRING. If the
// environment variable is created after the application is launched in a
// console or with Visual Studio, the shell or application needs to be closed
// and reloaded to take the environment variable into account.
string connectionString = Environment.GetEnvironmentVariable("AZURE_STORAGE_CONNECTION_STRING");

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

新しいコンテナーの名前を決定します。Decide on a name for the new container. 次のコードでは、確実に一意になるように、コンテナー名に GUID 値を追加します。The code below appends a GUID value to the container name to ensure that it is unique.

重要

コンテナーの名前は小文字にする必要があります。Container names must be lowercase. コンテナーと BLOB の名前付けの詳細については、「Naming and Referencing Containers, Blobs, and Metadata (コンテナー、BLOB、メタデータの名前付けと参照)」を参照してください。For more information about naming containers and blobs, see Naming and Referencing Containers, Blobs, and Metadata.

BlobServiceClient クラスのインスタンスを作成します。Create an instance of the BlobServiceClient class. 次に、CreateBlobContainerAsync メソッドを呼び出して、ストレージ アカウントにコンテナーを作成します。Then, call the CreateBlobContainerAsync method to create the container in your storage account.

Main メソッドの末尾に次のコードを追加します。Add this code to the end of the Main method:

// Create a BlobServiceClient object which will be used to create a container client
BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

//Create a unique name for the container
string containerName = "quickstartblobs" + Guid.NewGuid().ToString();

// Create the container and return a container client object
BlobContainerClient containerClient = await blobServiceClient.CreateBlobContainerAsync(containerName);

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

次のコード スニペット:The following code snippet:

  1. ローカルの data ディレクトリにテキスト ファイルを作成します。Creates a text file in the local data directory.
  2. コンテナーを作成する」セクションからのコンテナー上で GetBlobClient メソッドを呼び出すことで、BlobClient オブジェクトへの参照を取得します。Gets a reference to a BlobClient object by calling the GetBlobClient method on the container from the Create a container section.
  3. UploadAsync メソッドを呼び出して、ローカル テキスト ファイルを BLOB にアップロードします。Uploads the local text file to the blob by calling the UploadAsync method. このメソッドは、BLOB がまだ存在しない場合は作成し、既に存在する場合は上書きします。This method creates the blob if it doesn't already exist, and overwrites it if it does.

Main メソッドの末尾に次のコードを追加します。Add this code to the end of the Main method:

// Create a local file in the ./data/ directory for uploading and downloading
string localPath = "./data/";
string fileName = "quickstart" + Guid.NewGuid().ToString() + ".txt";
string localFilePath = Path.Combine(localPath, fileName);

// Write text to the file
await File.WriteAllTextAsync(localFilePath, "Hello, World!");

// Get a reference to a blob
BlobClient blobClient = containerClient.GetBlobClient(fileName);

Console.WriteLine("Uploading to Blob storage as blob:\n\t {0}\n", blobClient.Uri);

// Open the file and upload its data
using FileStream uploadFileStream = File.OpenRead(localFilePath);
await blobClient.UploadAsync(uploadFileStream, true);
uploadFileStream.Close();

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

GetBlobsAsync メソッドを呼び出して、コンテナー内の BLOB を一覧表示します。List the blobs in the container by calling the GetBlobsAsync method. この場合、コンテナーに BLOB が 1 つだけ追加されているので、一覧表示操作ではその 1 つの BLOB だけが返されます。In this case, only one blob has been added to the container, so the listing operation returns just that one blob.

Main メソッドの末尾に次のコードを追加します。Add this code to the end of the Main method:

Console.WriteLine("Listing blobs...");

// List all blobs in the container
await foreach (BlobItem blobItem in containerClient.GetBlobsAsync())
{
    Console.WriteLine("\t" + blobItem.Name);
}

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

DownloadAsync メソッドを呼び出して、以前に作成した BLOB をダウンロードします。Download the previously created blob by calling the DownloadAsync method. サンプル コードは、ローカル ファイル システム内で両方のファイルを見ることができるように、ファイル名に "DOWNLOADED" というサフィックスを追加します。The example code adds a suffix of "DOWNLOADED" to the file name so that you can see both files in local file system.

Main メソッドの末尾に次のコードを追加します。Add this code to the end of the Main method:

// Download the blob to a local file
// Append the string "DOWNLOAD" before the .txt extension 
// so you can compare the files in the data directory
string downloadFilePath = localFilePath.Replace(".txt", "DOWNLOAD.txt");

Console.WriteLine("\nDownloading blob to\n\t{0}\n", downloadFilePath);

// Download the blob's contents and save it to a file
BlobDownloadInfo download = await blobClient.DownloadAsync();

using (FileStream downloadFileStream = File.OpenWrite(downloadFilePath))
{
    await download.Content.CopyToAsync(downloadFileStream);
    downloadFileStream.Close();
}

コンテナーを削除するDelete a container

次のコードでは、DeleteAsync を使用してコンテナー全体を削除することで、アプリによって作成されたリソースをクリーンアップします。The following code cleans up the resources the app created by deleting the entire container by using DeleteAsync. また、アプリによって作成されたローカル ファイルも削除します。It also deletes the local files created by the app.

アプリでは、BLOB、コンテナー、およびローカル ファイルを削除する前に、Console.ReadLine を呼び出すことで、ユーザーの入力を一時停止します。The app pauses for user input by calling Console.ReadLine before it deletes the blob, container, and local files. このとき、リソースが削除される前に、実際に正しく作成されたことを確認できます。This is a good chance to verify that the resources were actually created correctly, before they are deleted.

Main メソッドの末尾に次のコードを追加します。Add this code to the end of the Main method:

// Clean up
Console.Write("Press any key to begin clean up");
Console.ReadLine();

Console.WriteLine("Deleting blob container...");
await containerClient.DeleteAsync();

Console.WriteLine("Deleting the local source and downloaded files...");
File.Delete(localFilePath);
File.Delete(downloadFilePath);

Console.WriteLine("Done");

コードの実行Run the code

このアプリでは、ローカルの data フォルダーにテスト ファイルが作成され、BLOB ストレージにアップロードされます。This app creates a test file in your local data folder and uploads it to Blob storage. 次に、コンテナー内の BLOB を一覧表示し、ファイルを新しい名前でダウンロードして、古いファイルと新しいファイルを比較できるようにします。The example then lists the blobs in the container and downloads the file with a new name so that you can compare the old and new files.

お使いのアプリケーションのディレクトリに移動し、アプリケーションをビルドして実行します。Navigate to your application directory, then build and run the application.

dotnet build
dotnet run

アプリの出力は、次の例のようになります。The output of the app is similar to the following example:

Azure Blob storage v12 - .NET quickstart sample

Uploading to Blob storage as blob:
         https://mystorageacct.blob.core.windows.net/quickstartblobs60c70d78-8d93-43ae-954d-8322058cfd64/quickstart2fe6c5b4-7918-46cb-96f4-8c4c5cb2fd31.txt

Listing blobs...
        quickstart2fe6c5b4-7918-46cb-96f4-8c4c5cb2fd31.txt

Downloading blob to
        ./data/quickstart2fe6c5b4-7918-46cb-96f4-8c4c5cb2fd31DOWNLOADED.txt

Press any key to begin clean up
Deleting blob container...
Deleting the local source and downloaded files...
Done

クリーンアップ プロセスを開始する前に、data フォルダー内の 2 つのファイルをチェックします。Before you begin the clean up process, check your data folder for the two files. それらを開いて、同じであるかどうかを確認します。You can open them and observe that they are identical.

ファイルを確認した後、Enter キーを押してテスト ファイルを削除し、デモを終了します。After you've verified the files, press the Enter key to delete the test files and finish the demo.

次のステップNext steps

このクイック スタートでは、.NET を使用して BLOB をアップロード、ダウンロード、および一覧表示する方法について説明しました。In this quickstart, you learned how to upload, download, and list blobs using .NET.

BLOB ストレージのサンプル アプリを確認するには、以下に進んでください。To see Blob storage sample apps, continue to: