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

.NET 用 Azure Blob Storage クライアント ライブラリを使用してみましょう。Get started with the Azure Blob Storage client library 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 クライアント ライブラリを使用すると、以下のことができます。Use the Azure Blob Storage client library for .NET to:

  • コンテナーを作成するCreate a container
  • コンテナーに対するアクセス許可を設定するSet permissions on a container
  • Azure Storage 内に BLOB を作成するCreate a blob in Azure Storage
  • ローカル コンピューターに BLOB をダウンロードするDownload the blob to your local computer
  • コンテナー内のすべての BLOB を一覧表示するList all of the blobs in a container
  • コンテナーを削除するDelete a container

API のリファレンスのドキュメント | ライブラリのソース コード | パッケージ (NuGet) | サンプルAPI reference documentation | Library source code | Package (NuGet) | Samples

前提条件Prerequisites

設定Setting up

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

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

まず、blob-quickstart という名前の .NET Core アプリケーションを作成します。First, create a .NET Core application named blob-quickstart.

  1. コンソール ウィンドウ (cmd、PowerShell、Bash など) で、dotnet new コマンドを使用し、blob-quickstart という名前で新しいコンソール アプリを作成します。In a console window (such as cmd, PowerShell, or Bash), use the dotnet new command to create a new console app with the name blob-quickstart. このコマンドにより、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 blob-quickstart
    
  2. 新しく作成された blob-quickstart フォルダーに切り替え、アプリをビルドし、すべて問題なく動作していることを確認します。Switch to the newly created blob-quickstart folder and build the app to verify that all is well.

    cd blob-quickstart
    
    dotnet build
    

ビルドからの予想される出力は、次のようになります。The expected output from the build should look something like this:

C:\QuickStarts\blob-quickstart> dotnet build
Microsoft (R) Build Engine version 16.0.450+ga8dc7f1d34 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 44.31 ms for C:\QuickStarts\blob-quickstart\blob-quickstart.csproj.
  blob-quickstart -> C:\QuickStarts\blob-quickstart\bin\Debug\netcoreapp2.1\blob-quickstart.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:03.08

パッケージをインストールする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 Microsoft.Azure.Storage.Blob

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

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

  1. エディターで Program.cs ファイルを開きますOpen the Program.cs file in your editor
  2. Console.WriteLine ステートメントを削除しますRemove the Console.WriteLine statement
  3. using ディレクティブを追加しますAdd using directives
  4. 例のメイン コードが配置される ProcessAsync メソッドを作成しますCreate a ProcessAsync method where the main code for the example will reside
  5. Main から ProcessAsync メソッドを非同期的に呼び出しますAsynchronously call the ProcessAsync method from Main

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

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;

namespace blob_quickstart
{
    class Program
    {
        public static void Main()
        {
            Console.WriteLine("Azure Blob Storage - .NET quickstart sample\n");

            // Run the examples asynchronously, wait for the results before proceeding
            ProcessAsync().GetAwaiter().GetResult();

            Console.WriteLine("Press any key to exit the sample application.");
            Console.ReadLine();
        }

        private static async Task ProcessAsync()
        {
        }
    }
}

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

サンプル アプリケーションは、ストレージ アカウントへのアクセスを認証する必要があります。The sample application needs to authenticate access to your storage account. 認証するには、ストレージ アカウントの資格情報を接続文字列としてアプリケーションに追加します。To authenticate, add your storage account credentials to the application as a connection string. 次の手順に従って、ストレージ アカウントの資格情報を表示します。View your storage account credentials by following these steps:

  1. Azure Portal に移動します。Navigate 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.

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラムについては、環境変数を追加した後で再起動が必要となる場合があります。After you add the environment variable, you may need to restart any running programs that will need to read the environment variable. たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。For example, if you are using Visual Studio as your editor, restart Visual Studio before running the example.

WindowsWindows

setx STORAGE_CONNECTION_STRING "<yourconnectionstring>"

LinuxLinux

export STORAGE_CONNECTION_STRING="<yourconnectionstring>"

MacOSMacOS

export STORAGE_CONNECTION_STRING="<yourconnectionstring>"

オブジェクト モデル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 a container

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

Blob Storage のアーキテクチャ図

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

  • CloudStorageAccount: CloudStorageAccount クラスは、Azure Storage アカウントを表します。CloudStorageAccount: The CloudStorageAccount class represents your Azure storage account. アカウント アクセス キーを使用して BLOB ストレージへのアクセスを承認するには、このクラスを使用します。Use this class to authorize access to Blob storage using your account access keys.
  • CloudBlobClient: CloudBlobClient クラスは、コード内の Blob service へのアクセス ポイントを提供します。CloudBlobClient: The CloudBlobClient class provides a point of access to the Blob service in your code.
  • CloudBlobContainer: CloudBlobContainer クラスは、コード内の BLOB コンテナーを表します。CloudBlobContainer: The CloudBlobContainer class represents a blob container in your code.
  • CloudBlockBlob: CloudBlockBlob オブジェクトは、コード内のブロック BLOB を表します。CloudBlockBlob: The CloudBlockBlob object represents a block blob in your code. ブロック BLOB は、個別に管理できるデータ ブロックで構成されます。Block blobs are made up of blocks of data that can be managed individually.

コード例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:

クライアントを認証するAuthenticate the client

次のコードでは、ストレージ アカウントを指す CloudStorageAccount オブジェクトを作成するために解析できる接続文字列が環境変数に含まれていることを確認します。The code below checks that the environment variable contains a connection string that can be parsed to create a CloudStorageAccount object pointing to the storage account. 接続文字列が有効であることを確認するには、TryParse メソッドを使用します。To check that the connection string is valid, use the TryParse method. TryParse が成功すると、storageAccount 変数が初期化され、true が返されます。If TryParse is successful, it initializes the storageAccount variable and returns true.

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

// 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 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 storageConnectionString = Environment.GetEnvironmentVariable("STORAGE_CONNECTION_STRING");

// Check whether the connection string can be parsed.
CloudStorageAccount storageAccount;
if (CloudStorageAccount.TryParse(storageConnectionString, out storageAccount))
{
    // If the connection string is valid, proceed with operations against Blob
    // storage here.
    // ADD OTHER OPERATIONS HERE
}
else
{
    // Otherwise, let the user know that they need to define the environment variable.
    Console.WriteLine(
        "A connection string has not been defined in the system environment variables. " +
        "Add an environment variable named 'STORAGE_CONNECTION_STRING' with your storage " +
        "connection string as a value.");
    Console.WriteLine("Press any key to exit the application.");
    Console.ReadLine();
}

注意

この記事の残りの操作を実行するには、上のコードの // ADD OTHER OPERATIONS HERE (//その他の操作をここに追加) を以降のセクションのコード スニペットに置き換えてください。To perform the rest of the operations in this article, replace // ADD OTHER OPERATIONS HERE in the code above with the code snippets in the following sections.

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

コンテナーを作成するには、まず、ストレージ アカウント内の BLOB ストレージを指す CloudBlobClient オブジェクトのインスタンスを作成します。To create the container, first create an instance of the CloudBlobClient object, which points to Blob storage in your storage account. 次に、CloudBlobContainer オブジェクトのインスタンスを作成し、コンテナーを作成します。Next, create an instance of the CloudBlobContainer object, then create the container.

この場合、コードはコンテナーを作成するために CreateAsync メソッドを呼び出します。In this case, the code calls the CreateAsync method to create the container. コンテナー名には、一意になるように、GUID 値が追加されます。A GUID value is appended to the container name to ensure that it is unique. 運用環境では、コンテナーがまだ存在していない場合にだけ作成するために、CreateIfNotExistsAsync メソッドの使用が望ましいことがよくあります。In a production environment, it's often preferable to use the CreateIfNotExistsAsync method to create a container only if it does not already exist.

重要

コンテナーの名前は小文字にする必要があります。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.

// Create the CloudBlobClient that represents the 
// Blob storage endpoint for the storage account.
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();

// Create a container called 'quickstartblobs' and 
// append a GUID value to it to make the name unique.
CloudBlobContainer cloudBlobContainer = 
    cloudBlobClient.GetContainerReference("quickstartblobs" + 
        Guid.NewGuid().ToString());
await cloudBlobContainer.CreateAsync();

コンテナーに対するアクセス許可を設定するSet permissions on a container

コンテナー内のすべての BLOB がパブリックになるように、コンテナーにアクセス権を設定します。Set permissions on the container so that any blobs in the container are public. BLOB がパブリックの場合は、すべてのクライアントが匿名でアクセスすることができます。If a blob is public, it can be accessed anonymously by any client.

// Set the permissions so the blobs are public.
BlobContainerPermissions permissions = new BlobContainerPermissions
{
    PublicAccess = BlobContainerPublicAccessType.Blob
};
await cloudBlobContainer.SetPermissionsAsync(permissions);

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

次のコード スニペットでは、前のセクションで作成したコンテナーで GetBlockBlobReference メソッドを呼び出して、CloudBlockBlob オブジェクトへの参照を取得します。The following code snippet gets a reference to a CloudBlockBlob object by calling the GetBlockBlobReference method on the container created in the previous section. 次に、UploadFromFileAsync メソッドを呼び出して、選択されたローカル ファイルを BLOB にアップロードします。It then uploads the selected local file to the blob by calling the UploadFromFileAsync method. このメソッドは、BLOB がまだ存在しない場合は作成し、既に存在する場合は上書きします。This method creates the blob if it doesn't already exist, and overwrites it if it does.

// Create a file in your local MyDocuments folder to upload to a blob.
string localPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string localFileName = "QuickStart_" + Guid.NewGuid().ToString() + ".txt";
string sourceFile = Path.Combine(localPath, localFileName);
// Write text to the file.
File.WriteAllText(sourceFile, "Hello, World!");

Console.WriteLine("Temp file = {0}", sourceFile);
Console.WriteLine("Uploading to Blob storage as blob '{0}'", localFileName);

// Get a reference to the blob address, then upload the file to the blob.
// Use the value of localFileName for the blob name.
CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(localFileName);
await cloudBlockBlob.UploadFromFileAsync(sourceFile);

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

ListBlobsSegmentedAsync メソッドを使用して、コンテナー内の BLOB を一覧表示します。List the blobs in the container by using the ListBlobsSegmentedAsync 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.

1 回の呼び出しで返す BLOB が多すぎる場合 (既定では 5,000 を超える場合)、ListBlobsSegmentedAsync メソッドは結果セット全体のうちの一部のセグメントと継続トークンを返します。If there are too many blobs to return in one call (by default, more than 5000), then the ListBlobsSegmentedAsync method returns a segment of the total result set and a continuation token. BLOB の次のセグメントを取得するには、前の呼び出しから返された継続トークンを指定します。この操作を、継続トークンが null になるまで繰り返します。To retrieve the next segment of blobs, you provide in the continuation token returned by the previous call, and so on, until the continuation token is null. null の継続トークンは、すべての BLOB を取得し終わったことを示します。A null continuation token indicates that all of the blobs have been retrieved. コードは、ベスト プラクティスのために継続トークンを使用する方法を示しています。The code shows how to use the continuation token for the sake of best practices.

// List the blobs in the container.
Console.WriteLine("List blobs in container.");
BlobContinuationToken blobContinuationToken = null;
do
{
    var results = await cloudBlobContainer.ListBlobsSegmentedAsync(null, blobContinuationToken);
    // Get the value of the continuation token returned by the listing call.
    blobContinuationToken = results.ContinuationToken;
    foreach (IListBlobItem item in results.Results)
    {
        Console.WriteLine(item.Uri);
    }
} while (blobContinuationToken != null); // Loop while the continuation token is not null.

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

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

// Download the blob to a local file, using the reference created earlier.
// Append the string "_DOWNLOADED" before the .txt extension so that you 
// can see both files in MyDocuments.
string destinationFile = sourceFile.Replace(".txt", "_DOWNLOADED.txt");
Console.WriteLine("Downloading blob to {0}", destinationFile);
await cloudBlockBlob.DownloadToFileAsync(destinationFile, FileMode.Create);

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

次のコードは、CloudBlobContainer.DeleteAsync を使用してコンテナー全体を削除することによって、アプリが作成したリソースをクリーンアップします。The following code cleans up the resources the app created by deleting the entire container using CloudBlobContainer.DeleteAsync. また、必要に応じてローカル ファイルを削除することもできます。You can also delete the local files if you like.

Console.WriteLine("Press the 'Enter' key to delete the example files, " +
    "example container, and exit the application.");
Console.ReadLine();
// Clean up resources. This includes the container and the two temp files.
Console.WriteLine("Deleting the container");
if (cloudBlobContainer != null)
{
    await cloudBlobContainer.DeleteIfExistsAsync();
}
Console.WriteLine("Deleting the source, and downloaded files");
File.Delete(sourceFile);
File.Delete(destinationFile);

コードの実行Run the code

このアプリは、ローカルの [マイ ドキュメント] フォルダーにテスト ファイルを作成し、BLOB ストレージにアップロードします。This app creates a test file in your local MyDocuments 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.

Visual Studio をエディターとして使用している場合は、F5 キーを押して実行することができます。If you are using Visual Studio as your editor, you can press F5 to run.

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

dotnet build
dotnet run

サンプル アプリケーションの出力は次の例のようになります。The output of the example application is similar to the following example:

Azure Blob storage - .NET Quickstart example

Created container 'quickstartblobs33c90d2a-eabd-4236-958b-5cc5949e731f'

Temp file = C:\Users\myusername\Documents\QuickStart_c5e7f24f-a7f8-4926-a9da-96
97c748f4db.txt
Uploading to Blob storage as blob 'QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f
4db.txt'

Listing blobs in container.
https://storagesamples.blob.core.windows.net/quickstartblobs33c90d2a-eabd-4236-
958b-5cc5949e731f/QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f4db.txt

Downloading blob to C:\Users\myusername\Documents\QuickStart_c5e7f24f-a7f8-4926
-a9da-9697c748f4db_DOWNLOADED.txt

Press any key to delete the example files and example container.

Enter キーを押すと、ストレージ コンテナーとファイルが削除されます。When you press the Enter key, the application deletes the storage container and the files. 削除する前に、 [マイ ドキュメント] フォルダーで 2 つのファイルをチェックします。Before you delete them, check your MyDocuments folder for the two files. それらを開いて、同じであるかどうかを確認します。You can open them and observe that they are identical. コンソール ウィンドウから BLOB の URL をコピーしてブラウザーに貼り付け、BLOB の内容を表示します。Copy the blob's URL from the console window and paste it into a browser to view the contents of the blob.

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

次の手順Next steps

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

BLOB ストレージに画像をアップロードする Web アプリの作成方法を学習するには、続けて次の記事をご覧ください:To learn how to create a web app that uploads an image to Blob storage, continue to: