クイックスタート: .NET 用 Azure Blob Storage クライアント ライブラリ v12
.NET 用 Azure Blob Storage クライアント ライブラリ v12 を使用してみましょう。 Azure Blob Storage は、Microsoft のクラウド用オブジェクト ストレージ ソリューションです。 手順に従ってパッケージをインストールし、基本タスクのコード例を試してみましょう。 Blob Storage は、テキスト データやバイナリ データなどの大量の非構造化データを格納するために最適化されています。
このクイックスタートの例では、.NET 用の Azure Blob Storage クライアント ライブラリ v12 を使用して以下を実行する方法を示します。
その他のリソース:
前提条件
- Azure サブスクリプション - 無料アカウントを作成する
- Azure Storage アカウント - ストレージ アカウントの作成
- 使用するオペレーティング システム用の最新の .NET Core SDK。 ランタイムではなく、必ず SDK を入手してください。
設定
このセクションでは、.NET 用 Azure Blob Storage クライアント ライブラリ v12 を操作するためのプロジェクトの準備について説明します。
プロジェクトを作成する
BlobQuickstartV12 という名前の .NET Core アプリケーションを作成します。
コンソール ウィンドウ (cmd、PowerShell、Bash など) 上で、
dotnet new
コマンドを使用し、BlobQuickstartV12 という名前の新しいコンソール アプリを作成します。 このコマンドにより、1 つのソース ファイルを使用する単純な "Hello World" C# プロジェクトが作成されます。Program.cs。dotnet new console -n BlobQuickstartV12
新しく作成した BlobQuickstartV12 ディレクトリに切り替えます。
cd BlobQuickstartV12
BlobQuickstartV12 ディレクトリ内に、data という別のディレクトリを作成します。 BLOB データ ファイルは、ここに作成され格納されます。
mkdir data
パッケージをインストールする
まだアプリケーション ディレクトリにいる間に、dotnet add package
コマンドを使用して、.NET 用の Azure Blob Storage クライアント ライブラリ パッケージをインストールします。
dotnet add package Azure.Storage.Blobs
アプリのフレームワークを設定する
プロジェクト ディレクトリで次の操作を行います。
ご使用のエディターで Program.cs ファイルを開きます。
Console.WriteLine("Hello World!");
ステートメントを削除します。using
ディレクティブを追加します。非同期をサポートするように
Main
メソッドの宣言を更新します。コードは次のとおりです。
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 で資格情報をコピーする
サンプル アプリケーションから Azure Storage に対して要求を実行するときは、承認されている必要があります。 要求を承認するには、ストレージ アカウントの資格情報を接続文字列としてアプリケーションに追加します。 ストレージ アカウントの資格情報を表示するには、次の手順に従います。
Azure portal にサインインします。
自分のストレージ アカウントを探します。
ストレージ アカウント メニュー ウィンドウの [セキュリティとネットワーク] で、 [アクセス キー] を選択します。 ここで、アカウント アクセス キーと各キーの完全な接続文字列が確認できます。
[アクセス キー] ペインで、 [キーの表示] を選択します。
[key1] セクションで、 [接続文字列] の値を見つけます。 [クリップボードにコピー] アイコンを選択して、接続文字列をコピーします。 次のセクションで、この接続文字列の値を環境変数に追加します。
ストレージ接続文字列の構成
接続文字列をコピーした後、アプリケーションを実行しているローカル マシンの新しい環境変数にそれを書き込みます。 環境変数を設定するには、コンソール ウィンドウを開いて、お使いのオペレーティング システムの手順に従います。 <yourconnectionstring>
は、実際の接続文字列に置き換えてください。
setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"
Windows で環境変数を追加した後、コマンド ウィンドウの新しいインスタンスを開始する必要があります。
プログラムの再起動
環境変数を追加した後、環境変数の読み取りを必要とする実行中のプログラムをすべて再起動します。 たとえば、続行する前に、ご使用の開発環境またはエディターを再起動します。
オブジェクト モデル
Azure Blob Storage は、大量の非構造化データを格納するために最適化されています。 非構造化データとは、特定のデータ モデルや定義に従っていないデータであり、テキスト データやバイナリ データなどがあります。 Blob Storage には、3 種類のリソースがあります。
- ストレージ アカウント
- ストレージ アカウント内のコンテナー
- コンテナー内の BLOB
次の図に、これらのリソースの関係を示します。
これらのリソースとやり取りするには、以下の .NET クラスを使用します。
- BlobServiceClient:
BlobServiceClient
クラスを使用して、Azure Storage リソースと BLOB コンテナーを操作できます。 - BlobContainerClient:
BlobContainerClient
クラスを使用して、Azure Storage コンテナーとその BLOB を操作できます。 - BlobClient:
BlobClient
クラスを使用して、Azure Storage BLOB を操作できます。
コード例
次のセクションのサンプル コード スニペットでは、.NET 用 Azure Blob Storage クライアント ライブラリを使用して基本的なデータ操作を実行する方法を示します。
接続文字列を取得する
以下のコードでは、「ストレージ接続文字列の構成」セクションで作成した環境変数から、ストレージ アカウントに対する接続文字列を取得します。
このコードを Main
メソッド内に追加します。
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");
コンテナーを作成する
新しいコンテナーの名前を決定します。 次のコードでは、確実に一意になるように、コンテナー名に GUID 値を追加します。
重要
コンテナーの名前は小文字にする必要があります。 コンテナーと BLOB の名前付けの詳細については、「Naming and Referencing Containers, Blobs, and Metadata (コンテナー、BLOB、メタデータの名前付けと参照)」を参照してください。
BlobServiceClient クラスのインスタンスを作成します。 次に、CreateBlobContainerAsync メソッドを呼び出して、ストレージ アカウントにコンテナーを作成します。
Main
メソッドの末尾に次のコードを追加します。
// 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 をアップロードする
次のコード スニペット:
- ローカルの data ディレクトリにテキスト ファイルを作成します。
- 「コンテナーを作成する」セクションからのコンテナー上で GetBlobClient メソッドを呼び出すことで、BlobClient オブジェクトへの参照を取得します。
- UploadAsync メソッドを呼び出して、ローカル テキスト ファイルを BLOB にアップロードします。 このメソッドは、BLOB がまだ存在しない場合は作成し、既に存在する場合は上書きします。
Main
メソッドの末尾に次のコードを追加します。
// 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);
// Upload data from the local file
await blobClient.UploadAsync(localFilePath, true);
コンテナー内の BLOB を一覧表示する
GetBlobsAsync メソッドを呼び出して、コンテナー内の BLOB を一覧表示します。 この場合、コンテナーに BLOB が 1 つだけ追加されているので、一覧表示操作ではその 1 つの BLOB だけが返されます。
Main
メソッドの末尾に次のコードを追加します。
Console.WriteLine("Listing blobs...");
// List all blobs in the container
await foreach (BlobItem blobItem in containerClient.GetBlobsAsync())
{
Console.WriteLine("\t" + blobItem.Name);
}
BLOB をダウンロードする
DownloadToAsync メソッドを呼び出して、以前に作成した BLOB をダウンロードします。 サンプル コードは、ローカル ファイル システム内で両方のファイルを見ることができるように、ファイル名に "DOWNLOADED" というサフィックスを追加します。
Main
メソッドの末尾に次のコードを追加します。
// Download the blob to a local file
// Append the string "DOWNLOADED" before the .txt extension
// so you can compare the files in the data directory
string downloadFilePath = localFilePath.Replace(".txt", "DOWNLOADED.txt");
Console.WriteLine("\nDownloading blob to\n\t{0}\n", downloadFilePath);
// Download the blob's contents and save it to a file
await blobClient.DownloadToAsync(downloadFilePath);
コンテナーを削除する
次のコードでは、DeleteAsync を使用してコンテナー全体を削除することで、アプリによって作成されたリソースをクリーンアップします。 また、アプリによって作成されたローカル ファイルも削除します。
アプリでは、BLOB、コンテナー、およびローカル ファイルを削除する前に、Console.ReadLine
を呼び出すことで、ユーザーの入力を一時停止します。 このとき、リソースが削除される前に、実際に正しく作成されたことを確認できます。
Main
メソッドの末尾に次のコードを追加します。
// 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");
コードの実行
このアプリでは、ローカルの data フォルダーにテスト ファイルが作成され、BLOB ストレージにアップロードされます。 次に、コンテナー内の BLOB を一覧表示し、ファイルを新しい名前でダウンロードして、古いファイルと新しいファイルを比較できるようにします。
お使いのアプリケーションのディレクトリに移動し、アプリケーションをビルドして実行します。
dotnet build
dotnet run
アプリの出力は、次の例のようになります。
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 つのファイルをチェックします。 それらを開いて、同じであるかどうかを確認します。
ファイルを確認した後、Enter キーを押してテスト ファイルを削除し、デモを終了します。
次のステップ
このクイック スタートでは、.NET を使用して BLOB をアップロード、ダウンロード、および一覧表示する方法について説明しました。
BLOB ストレージのサンプル アプリを確認するには、以下に進んでください。
- チュートリアル、サンプル、クイックスタートなどのドキュメントについては、「.NET および .NET Core 開発者向けの Azure」を参照してください。
- .NET Core の詳細については、「Get started with .NET in 10 minutes (10 分で .NET を使い始める)」を参照してください。