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

Java 用 Azure Blob Storage クライアント ライブラリ v12 を使用してみましょう。Get started with the Azure Blob storage client library v12 for Java. 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.

注意

以前の SDK バージョンを使ってみるには、「クイックスタート: Java 用 Azure Blob Storage クライアント ライブラリ」を参照してください。To get started with the previous SDK version, see Quickstart: Azure Blob storage client library for Java.

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

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

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

注意

この記事で説明されている機能は、階層構造の名前空間を持つアカウントで使用できるようになりました。The features described in this article are now available to accounts that have a hierarchical namespace. 制限を確認するには、Azure Data Lake Storage Gen2 に関する既知の問題 の記事を参照してください。To review limitations, see the Known issues with Azure Data Lake Storage Gen2 article.

前提条件Prerequisites

設定Setting up

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

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

blob-quickstart-v12 という名前の Java アプリケーションを作成します。Create a Java application named blob-quickstart-v12.

  1. コンソール ウィンドウ (cmd、PowerShell、Bash など) で、Maven コマンドを使用し、blob-quickstart-v12 という名前で新しいコンソール アプリを作成します。In a console window (such as cmd, PowerShell, or Bash), use Maven to create a new console app with the name blob-quickstart-v12. 次の mvn コマンドを入力して、単純な "Hello world!" を作成します。Type the following mvn command to create a simple "Hello world!" Java プロジェクト。Java project.

    mvn archetype:generate -DgroupId=com.blobs.quickstart \
                           -DartifactId=blob-quickstart-v12 \
                           -DarchetypeArtifactId=maven-archetype-quickstart \
                           -DarchetypeVersion=1.4 \
                           -DinteractiveMode=false
    
  2. プロジェクトの生成からの出力は、次のようになります。The output from generating the project should look something like this:

    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< org.apache.maven:standalone-pom >-------------------
    [INFO] Building Maven Stub Project (No POM) 1
    [INFO] --------------------------------[ pom ]---------------------------------
    [INFO]
    [INFO] >>> maven-archetype-plugin:3.1.2:generate (default-cli) > generate-sources @ standalone-pom >>>
    [INFO]
    [INFO] <<< maven-archetype-plugin:3.1.2:generate (default-cli) < generate-sources @ standalone-pom <<<
    [INFO]
    [INFO]
    [INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ standalone-pom ---
    [INFO] Generating project in Batch mode
    [INFO] ----------------------------------------------------------------------------
    [INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
    [INFO] ----------------------------------------------------------------------------
    [INFO] Parameter: groupId, Value: com.blobs.quickstart
    [INFO] Parameter: artifactId, Value: blob-quickstart-v12
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] Parameter: package, Value: com.blobs.quickstart
    [INFO] Parameter: packageInPathFormat, Value: com/blobs/quickstart
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] Parameter: package, Value: com.blobs.quickstart
    [INFO] Parameter: groupId, Value: com.blobs.quickstart
    [INFO] Parameter: artifactId, Value: blob-quickstart-v12
    [INFO] Project created from Archetype in dir: C:\QuickStarts\blob-quickstart-v12
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  7.056 s
    [INFO] Finished at: 2019-10-23T11:09:21-07:00
    [INFO] ------------------------------------------------------------------------
        ```
    
    
  3. Switch to the newly created blob-quickstart-v12 folder.

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

    mkdir data
    

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

テキスト エディターで pom.xml ファイルを開きます。Open the pom.xml file in your text editor. 依存関係のグループに、次の dependency 要素を追加します。Add the following dependency element to the group of dependencies.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <version>12.0.0</version>
</dependency>

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

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

  1. /src/main/java/com/blobs/quickstart ディレクトリに移動しますNavigate to the /src/main/java/com/blobs/quickstart directory
  2. 使用しているエディターで App.java ファイルを開きますOpen the App.java file in your editor
  3. System.out.println("Hello world!"); ステートメントを削除しますDelete the System.out.println("Hello world!"); statement
  4. import ディレクティブを追加しますAdd import directives

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

package com.blobs.quickstart;

/**
 * Azure blob storage v12 SDK quickstart
 */
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import java.io.*;

public class App
{
    public static void main( String[] args ) throws IOException
    {
    }
}

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 のアーキテクチャ図

これらのリソースとやり取りするには、以下の Java クラスを使用します。Use the following Java 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. ストレージ アカウントでは、Blob service に対して最上位の名前空間が提供されます。The storage account provides the top-level namespace for the Blob service.
  • BlobServiceClientBuilder:BlobServiceClientBuilder クラスでは、BlobServiceClient オブジェクトの構成とインスタンス化を支援する fluent ビルダー API が提供されています。BlobServiceClientBuilder: The BlobServiceClientBuilder class provides a fluent builder API to help aid the configuration and instantiation of BlobServiceClient objects.
  • 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.
  • BlobItem:BlobItem クラスでは、listBlobsFlat の呼び出しから返された個々の BLOB が示されます。BlobItem: The BlobItem class represents individual blobs returned from a call to listBlobsFlat.

コード例Code examples

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

接続文字列を取得する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:

System.out.println("Azure Blob storage v12 - Java 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 connectStr = System.getenv("AZURE_STORAGE_CONNECTION_STRING");

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

新しいコンテナーの名前を決定します。Decide on a name for the new container. 次のコードでは、確実に一意になるように、コンテナー名に UUID 値を追加します。The code below appends a UUID 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.

次に、BlobContainerClient クラスのインスタンスを作成し、create メソッドを呼び出して、ストレージ アカウントに実際にコンテナーを作成します。Next, create an instance of the BlobContainerClient class, then call the create method to actually 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 BlobServiceClientBuilder().connectionString(connectStr).buildClient();

//Create a unique name for the container
String containerName = "quickstartblobs" + java.util.UUID.randomUUID();

// Create the container and return a container client object
BlobContainerClient containerClient = blobServiceClient.createBlobContainer(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. uploadFromFile メソッドを呼び出して、ローカル テキスト ファイルを BLOB にアップロードします。Uploads the local text file to the blob by calling the uploadFromFile method. このメソッドは、BLOB がまだ存在しない場合は作成しますが、既に存在する場合は上書きしません。This method creates the blob if it doesn't already exist, but will not overwrite 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" + java.util.UUID.randomUUID() + ".txt";
File localFile = new File(localPath + fileName);

// Write text to the file
FileWriter writer = new FileWriter(localPath + fileName, true);
writer.write("Hello, World!");
writer.close();

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

System.out.println("\nUploading to Blob storage as blob:\n\t" + blobClient.getBlobUrl());

// Upload the blob
blobClient.uploadFromFile(localPath + fileName);

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

listBlobs メソッドを呼び出して、コンテナー内の BLOB を一覧表示します。List the blobs in the container by calling the listBlobs 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:

System.out.println("\nListing blobs...");

// List the blob(s) in the container.
for (BlobItem blobItem : containerClient.listBlobs()) {
    System.out.println("\t" + blobItem.getName());
}

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

downloadToFile メソッドを呼び出して、以前に作成した BLOB をダウンロードします。Download the previously created blob by calling the downloadToFile method. サンプル コードでは、ローカル ファイル システム内で両方のファイルを見ることができるように、ファイル名に "DOWNLOAD" というサフィックスを追加します。The example code adds a suffix of "DOWNLOAD" 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 that you can see both files.
String downloadFileName = fileName.replace(".txt", "DOWNLOAD.txt");
File downloadedFile = new File(localPath + downloadFileName);

System.out.println("\nDownloading blob to\n\t " + localPath + downloadFileName);

blobClient.downloadToFile(localPath + downloadFileName);

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

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

アプリでは、BLOB、コンテナー、およびローカル ファイルを削除する前に、System.console().readLine() を呼び出すことで、ユーザーの入力を一時停止します。The app pauses for user input by calling System.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
System.out.println("\nPress the Enter key to begin clean up");
System.console().readLine();

System.out.println("Deleting blob container...");
containerClient.delete();

System.out.println("Deleting the local source and downloaded files...");
localFile.delete();
downloadedFile.delete();

System.out.println("Done");

コードの実行Run the code

このアプリでは、ローカル フォルダーにテスト ファイルが作成され、BLOB ストレージにアップロードされます。This app creates a test file in your local 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.

pom.xml ファイルが格納されているディレクトリに移動し、次の mvn コマンドを使用してプロジェクトをコンパイルします。Navigate to the directory containing the pom.xml file and compile the project by using the following mvn command.

mvn compile

次に、パッケージをビルドします。Then, build the package.

mvn package

次の mvn コマンドを実行して、アプリを実行します。Run the following mvn command to execute the app.

mvn exec:java -Dexec.mainClass="com.blobs.quickstart.App" -Dexec.cleanupDaemonThreads=false

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

Azure Blob storage v12 - Java quickstart sample

Uploading to Blob storage as blob:
        https://mystorageacct.blob.core.windows.net/quickstartblobsf9aa68a5-260e-47e6-bea2-2dcfcfa1fd9a/quickstarta9c3a53e-ae9d-4863-8b34-f3d807992d65.txt

Listing blobs...
        quickstarta9c3a53e-ae9d-4863-8b34-f3d807992d65.txt

Downloading blob to
        ./data/quickstarta9c3a53e-ae9d-4863-8b34-f3d807992d65DOWNLOAD.txt

Press the Enter 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

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

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