クイック スタート:.NET を使用してオブジェクト ストレージ内に BLOB を作成するQuickstart: Use .NET to create a blob in object storage

このクイック スタートでは、.NET 用 Azure Storage クライアント ライブラリを使用して、BLOB (オブジェクト) ストレージ内にコンテナーと BLOB を作成する方法について説明します。In this quickstart, you learn how to use the Azure Storage client library for .NET to create a container and a blob in Blob (object) storage. 次に、ローカル コンピューターに BLOB をダウンロードする方法と、コンテナー内のすべての BLOB を一覧表示する方法について説明します。Next, you learn how to download the blob to your local computer, and how to list all of the blobs in a container.

前提条件Prerequisites

Azure Storage にアクセスするには、Azure サブスクリプションが必要です。To access Azure Storage, you'll need an Azure subscription. サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't already have a subscription, then create a free account before you begin.

Azure Storage へのアクセスはすべて、ストレージ アカウント経由で行われます。All access to Azure Storage takes place through a storage account. このクイック スタートでは、Azure portal、Azure PowerShell、または Azure CLI を使用して、ストレージ アカウントを作成します。For this quickstart, create a storage account using the Azure portal, Azure PowerShell, or Azure CLI. アカウントの作成については、「ストレージ アカウントの作成」を参照してください。For help creating the account, see Create a storage account.

次に、ご使用のオペレーティング システム用の .NET Core 2.1 をダウンロードしてインストールします。Next, download and install .NET Core 2.1 for your operating system. Windows を実行している場合は、Visual Studio をインストールして、.NET Framework を使用してもかまいません。If you are running Windows, you can install Visual Studio and use the .NET Framework if you prefer. オペレーティング システムで使用するエディターをインストールすることもできます。You can also choose to install an editor to use with your operating system.

.NET Core と .NET Framework の選択については、サーバー アプリ用 .NET Core と .NET Framework の選択に関するページを参照してください。For information about choosing between .NET Core and the .NET Framework, see Choose between .NET Core and .NET Framework for server apps.

サンプル アプリケーションのダウンロードDownload the sample application

このクイックスタートで使うサンプル アプリケーションは、基本的なコンソール アプリケーションです。The sample application used in this quickstart is a basic console application. GitHub でサンプル アプリケーションを調べることができます。You can explore the sample application on GitHub.

アプリケーションのコピーを開発環境にダウンロードするには、git を使います。Use git to download a copy of the application to your development environment.

git clone https://github.com/Azure-Samples/storage-blobs-dotnet-quickstart.git

このコマンドは、ローカルの git フォルダーにリポジトリを複製します。This command clones the repository to your local git folder. Visual Studio ソリューションを開くには、storage-blobs-dotnet-quickstart フォルダーを開き、storage-blobs-dotnet-quickstart.sln をダブルクリックします。To open the Visual Studio solution, look for the storage-blobs-dotnet-quickstart folder, open it, and double-click on storage-blobs-dotnet-quickstart.sln.

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

アプリケーションを実行するには、ストレージ アカウントの接続文字列を指定する必要があります。To run the application, you must provide the connection string for your storage account. サンプル アプリケーションは、環境変数から接続文字列を読み取り、それを使って、Azure Storage に対する要求を承認します。The sample application reads the connection string from an environment variable and uses it to authorize requests to Azure Storage.

接続文字列をコピーした後、アプリケーションを実行しているローカル マシンの新しい環境変数にそれを書き込みます。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:

setx storageconnectionstring "<yourconnectionstring>"

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

サンプルを実行するRun the sample

このサンプルは、ローカルの [マイ ドキュメント] フォルダーにテスト ファイルを作成し、BLOB ストレージにアップロードします。This sample creates a test file in your local MyDocuments folder and uploads it to Blob storage. 次に、コンテナー内の BLOB を一覧表示し、ファイルを新しい名前でダウンロードして、古いファイルと新しいファイルを比較できるようにします。The sample 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.

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

dotnet run

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

Azure Blob storage - .NET Quickstart sample

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

Temp file = C:\Users\myusername\Documents\QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f4db.txt
Uploading to Blob storage as blob 'QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f4db.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 sample 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. サンプルの機能がわかったら、Program.cs ファイルを開いてコードを確認します。Now that you know what the sample does, open the Program.cs file to look at the code.

サンプル コードを理解するUnderstand the sample code

次に、サンプル コードを調べて、そのしくみを理解できるようにします。Next, explore the sample code so that you can understand how it works.

接続文字列を解析してみるTry parsing the connection string

サンプルで最初に行われるのは、ストレージ アカウントを指す CloudStorageAccount オブジェクトの作成のために解析できる接続文字列が環境変数に含まれているかどうかを確認することです。The first thing that the sample does is to check 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.

// 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 storageconnectionstring.
// 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("storageconnectionstring");

// 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.
    ...
}
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 'storageconnectionstring' with your storage " +
        "connection string as a value.");
    Console.WriteLine("Press any key to exit the sample application.");
    Console.ReadLine();
}

コンテナーを作成し、アクセス許可を設定するCreate the container and set permissions

次に、このサンプルは、コンテナーを作成し、コンテナー内のすべての BLOB がパブリックになるようにアクセス許可を設定します。Next, the sample creates a container and sets its permissions so that any blobs in the container are public. BLOB がパブリックの場合は、すべてのクライアントが匿名でアクセスすることができます。If a blob is public, it can be accessed anonymously by any client.

コンテナーを作成するには、まず、ストレージ アカウント内の 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 sample 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 and avoid naming conflicts.

重要

コンテナーの名前は小文字にする必要があります。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 the permissions so the blobs are public.
BlobContainerPermissions permissions = new BlobContainerPermissions
{
    PublicAccess = BlobContainerPublicAccessType.Blob
};
await cloudBlobContainer.SetPermissionsAsync(permissions);

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

次に、このサンプルは、ローカル ファイルをブロック BLOB にアップロードします。Next, the sample uploads a local file to a block blob. このコード例では、前のセクションで作成したコンテナーで GetBlockBlobReference メソッドを呼び出して、CloudBlockBlob オブジェクトへの参照を取得します。The code example 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 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";
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 を一覧表示します。The sample lists the blobs in the container using the ListBlobsSegmentedAsync method. このサンプルの場合、コンテナーに BLOB が 1 つだけ追加されているので、一覧表示操作ではその 1 つの BLOB だけが返されます。In the case of the sample, 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 sample 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 をローカル ファイル システムにダウンロードします。Next, the sample downloads the blob created previously to your local file system using the DownloadToFileAsync method. サンプル コードは、ローカル ファイル システムで両方のファイルを見ることができるように、BLOB の名前に "_DOWNLOADED" というサフィックスを追加します。The sample 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.
destinationFile = sourceFile.Replace(".txt", "_DOWNLOADED.txt");
Console.WriteLine("Downloading blob to {0}", destinationFile);
await cloudBlockBlob.DownloadToFileAsync(destinationFile, FileMode.Create);  

リソースのクリーンアップClean up resources

このサンプルは、CloudBlobContainer.DeleteAsync を使用してコンテナー全体を削除することによって、作成したリソースをクリーンアップします。The sample cleans up the resources that it 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 sample 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);

BLOB を使用する .NET アプリケーションを開発するためのリソースResources for developing .NET applications with blobs

BLOB ストレージを使用する .NET 開発については、以下の追加リソースを参照してください。See these additional resources for .NET development with Blob storage:

バイナリとソース コードBinaries and source code

クライアント ライブラリ リファレンスとサンプルClient library reference and samples

次の手順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: