Azure Storage 用の Spring Boot Starter の使用方法How to use the Spring Boot Starter for Azure Storage

この記事では、Spring Initializr を使用してカスタム アプリケーションを作成し、そのアプリケーションに Azure Storage スターターを追加した後、アプリケーションを使用して Azure ストレージ アカウントに BLOB をアップロードする手順について説明します。This article walks you through creating a custom application using the Spring Initializr, then adding the Azure storage starter to your application, and then using your application to upload a blob to your Azure storage account.

前提条件Prerequisites

この記事の手順に従うには、次の前提条件が必要です。The following prerequisites are required in order to follow the steps in this article:

重要

この記事の手順を完了するには、Spring Boot 2.0 以上のバージョンが必要です。Spring Boot version 2.0 or greater is required to complete the steps in this article.

アプリケーションの Azure ストレージ アカウントと BLOB コンテナーを作成するCreate an Azure Storage Account and blob container for your application

次の手順では、ポータルで Azure ストレージ アカウントとコンテナーを作成します。The following procedure creates an Azure storage account and container in the portal.

  1. Azure portal (https://portal.azure.com/) を参照し、サインインします。Browse to the Azure portal at https://portal.azure.com/ and sign in.

  2. [リソースの作成] を選択し、 [作業の開始] を選択して、 [ストレージ アカウント] を選択します。Select Create a resource, then Get started, and then select Storage Account.

    Azure ストレージ アカウントを作成する

  3. [ストレージ アカウントの作成] ページで、次の情報を入力します。On the Create storage account page, enter the following information:

    • [サブスクリプション] を選択します。Select Subscription.
    • リソース グループ を選択するか、新しいリソース グループを作成します。Select Resource group, or create a new resource group.
    • 一意の ストレージ アカウント名 を入力します。この名前は、ストレージ アカウントの URI の一部になります。Enter a unique Storage account name, which will become part of the URI for your storage account. たとえば、 [名前] に「wingtiptoysstorage」と入力した場合、URI は wingtiptoysstorage.core.windows.net になります。For example: if you entered wingtiptoysstorage for the Name, the URI would be wingtiptoysstorage.core.windows.net.
    • ストレージ アカウントの 場所 を指定します。Specify the Location for your storage account.
  4. 上記のオプションを指定したら、 [確認と作成] を選択します。When you have specified the options listed above, select Review + create.

  5. 指定した内容を確認し、 [作成] を選択してストレージ アカウントを作成します。Review the specification, then select Create to create your storage account.

  6. デプロイが完了したら、 [リソースに移動] を選択します。When the deployment is complete, select Go to resource.

  7. [コンテナー] を選択します。Select Containers.

  8. [コンテナー] を選択します。Select Container.

    • コンテナーに名前を付けます。Name the container.
    • ドロップダウン リストから [BLOB] を選択します。Select Blob from the drop-down list.

    BLOB コンテナーを作成する

  9. BLOB コンテナーが作成されると、Azure portal に表示されます。The Azure portal will list your blob container after is has been created.

次の手順に従い、Azure CLI を使用して Azure ストレージ アカウントとコンテナーを作成することもできます。You can also use Azure CLI to create an Azure storage account and container using the following steps. プレースホルダーの値 (山かっこ内) は、忘れずに実際の値に置き換えてください。Remember to replace the placeholder values (in angle brackets) with your own values.

  1. コマンド プロンプトを開きます。Open a command prompt.

  2. Azure アカウントにサインインします。Sign in to your Azure account:

    az login
    
  3. リソース グループがない場合は、次のコマンドを使用して作成します。If you don't have a resource group, create one using the following command:

    az group create \
       --name <resource-group> \
       --location <location>
    
  4. 次のコマンドを使用して、ストレージ アカウントを作成します。Create a storage account by using the following command:

     az storage account create \
       --name <storage-account> \
       --resource-group <resource-group> \
       --location <location> 
    
  5. コンテナーを作成するには、次のコマンドを使用します。To create a container, use the following command:

     az storage container create \
       --account-name <storage-account-name> \
       --name <container-name> \
       --auth-mode login
    

Spring Initializr でシンプルな Spring Boot アプリケーションを作成するCreate a simple Spring Boot application with the Spring Initializr

次の手順では、Spring Boot アプリケーションを作成します。The following procedure creates the Spring boot application.

  1. https://start.spring.io/ を参照します。Browse to https://start.spring.io/.

  2. 次のオプションを指定します。Specify the following options:

    • Maven プロジェクトを作成します。Generate a Maven project.

    • Java 11 を指定します。Specify Java 11.

    • Spring Boot のバージョンとして、2.3 以上を指定します。Specify a Spring Boot version that is equal to or greater than 2.3.

    • アプリケーションの グループ (Group)成果物 (Artifact) の名前を指定します。Specify the Group and Artifact names for your application.

    • Spring Web の依存関係を追加します。Add the Spring Web dependency.

      基本的な Spring Initializr オプション

    注意

    Spring Initializr では、グループ (Group)成果物 (Artifact) の名前を使用してパッケージ名を作成します (例: com.wingtiptoys.storage)。The Spring Initializr uses the Group and Artifact names to create the package name; for example: com.wingtiptoys.storage.

  3. 上記のオプションを指定したら、 [生成] を選択します。When you have specified the options listed above, select GENERATE.

  4. メッセージが表示されたら、ローカル コンピューター上のパスにプロジェクトをダウンロードします。When prompted, download the project to a path on your local computer.

  5. ファイルをローカル システム上に展開したら、シンプルな Spring Boot アプリケーションの編集を開始できます。After you have extracted the files on your local system, your simple Spring Boot application will be ready to edit.

Azure Storage スターターを使用するように Spring Boot アプリを構成するConfigure your Spring Boot app to use the Azure Storage starter

次の手順では、Azure Storage を使用するように Spring Boot アプリケーションを構成します。The following procedure configures the Spring boot application to use Azure storage.

  1. アプリのルート ディレクトリで pom.xml ファイルを探します。次に例を示します。Locate the pom.xml file in the root directory of your app; for example:

    C:\SpringBoot\storage\pom.xml

    または-or-

    /users/example/home/storage/pom.xml

  2. テキスト エディターで pom.xml ファイルを開き、Spring Cloud Azure Storage スターターを <dependencies> のリストに追加します。Open the pom.xml file in a text editor, and add the Spring Cloud Azure Storage starter to the list of <dependencies>:

    <dependency>
       <groupId>com.microsoft.azure</groupId>
       <artifactId>spring-starter-azure-storage</artifactId>
       <version>1.2.8</version>
    </dependency>
    
  3. JDK バージョン 9 以上を使用している場合は、次の依存関係を追加します。If you're using JDK version 9 or greater, add the following dependencies:

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.1</version>
        <scope>runtime</scope>
    </dependency>
    
  4. pom.xml ファイルを保存して閉じます。Save and close the pom.xml file.

Azure 資格情報ファイルを作成するCreate an Azure Credential File

次の手順では、Azure 資格情報ファイルを作成します。The following procedure creates the Azure credential file.

  1. コマンド プロンプトを開きます。Open a command prompt.

  2. Spring Boot アプリの resources ディレクトリに移動します。次に例を示します。Navigate to the resources directory of your Spring Boot app; for example:

    cd C:\SpringBoot\storage\src\main\resources
    

    または-or-

    cd /users/example/home/storage/src/main/resources
    
  3. Azure アカウントにサインインします。Sign in to your Azure account:

    az login
    
  4. サブスクリプションを一覧表示します。List your subscriptions:

    az account list
    

    Azure からサブスクリプションの一覧が返されます。使用するサブスクリプションの GUID をコピーする必要があります。次に例を示します。Azure will return a list of your subscriptions, and you will need to copy the GUID for the subscription that you want to use; for example:

    [
      {
        "cloudName": "AzureCloud",
        "id": "11111111-1111-1111-1111-111111111111",
        "isDefault": true,
        "name": "Converted Windows Azure MSDN - Visual Studio Ultimate",
        "state": "Enabled",
        "tenantId": "22222222-2222-2222-2222-222222222222",
        "user": {
          "name": "gena.soto@wingtiptoys.com",
          "type": "user"
        }
      }
    ]
    
  5. Azure で使用するサブスクリプションの GUID を指定します。次に例を示します。Specify the GUID for the subscription you want to use with Azure; for example:

    az account set -s 11111111-1111-1111-1111-111111111111
    
  6. Azure 資格情報ファイルを作成します。Create your Azure Credential file:

    az ad sp create-for-rbac --sdk-auth > my.azureauth
    

    このコマンドにより、resources ディレクトリに、次の例のような内容の my.azureauth ファイルが作成されます。This command will create a my.azureauth file in your resources directory with contents that resemble the following example:

    {
      "clientId": "33333333-3333-3333-3333-333333333333",
      "clientSecret": "44444444-4444-4444-4444-444444444444",
      "subscriptionId": "11111111-1111-1111-1111-111111111111",
      "tenantId": "22222222-2222-2222-2222-222222222222",
      "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
      "resourceManagerEndpointUrl": "https://management.azure.com/",
      "activeDirectoryGraphResourceId": "https://graph.windows.net/",
      "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
      "galleryEndpointUrl": "https://gallery.azure.com/",
      "managementEndpointUrl": "https://management.core.windows.net/"
    }
    

Azure ストレージ アカウントを使用するように Spring Boot アプリを構成するConfigure your Spring Boot app to use your Azure Storage account

次の手順では、Azure ストレージ アカウントを使用するように Spring Boot アプリケーションを構成します。The following procedure configures the Spring boot application to use your Azure storage account.

  1. アプリの resources ディレクトリで application.properties を探します。次に例を示します。Locate the application.properties in the resources directory of your app; for example:

    C:\SpringBoot\storage\src\main\resources\application.properties

    または-or-

    /users/example/home/storage/src/main/resources/application.properties

  2. テキスト エディターで application.properties ファイルを開きます。次の行を追加し、サンプルの値をストレージ アカウントの適切なプロパティに置き換えます。Open the application.properties file in a text editor, add the following lines, and then replace the sample values with the appropriate properties for your storage account:

    spring.cloud.azure.credential-file-path=my.azureauth
    spring.cloud.azure.resource-group=wingtiptoysresources
    spring.cloud.azure.region=westUS
    spring.cloud.azure.storage.account=wingtiptoysstorage
    blob=azure-blob://containerName/blobName
    

    各値の説明:Where:

    フィールドField 説明Description
    spring.cloud.azure.credential-file-path このチュートリアルで作成した Azure 資格情報ファイルを指定します。Specifies Azure credential file that you created earlier in this tutorial.
    spring.cloud.azure.resource-group Azure ストレージ アカウントを含む Azure リソース グループを指定します。Specifies the Azure Resource Group that contains your Azure Storage account.
    spring.cloud.azure.region Azure ストレージ アカウントの作成時に指定した地理的リージョンを指定します。Specifies the geographical region that you specified when you created your Azure Storage account.
    spring.cloud.azure.storage.account このチュートリアルで作成した Azure ストレージ アカウントを指定します。Specifies Azure Storage account that you created earlier in this tutorial.
    blob データを格納するコンテナーと BLOB の名前を指定します。Specifies the names of the container and blob where you want to store the data.
  3. application.properties ファイルを保存して閉じます。Save and close the application.properties file.

Azure Storage の基本的な機能を実装するサンプル コードを追加するAdd sample code to implement basic Azure storage functionality

このセクションでは、BLOB を Azure ストレージ アカウントに保存するために必要な Java クラスを作成します。In this section, you create the necessary Java classes for storing a blob in your Azure storage account.

アプリケーションのメイン クラスを変更するModify the main application class

  1. アプリのパッケージ ディレクトリでメイン アプリケーションの Java ファイルを探します。次に例を示します。Locate the main application Java file in the package directory of your app; for example:

    C:\SpringBoot\storage\src\main\java\com\wingtiptoys\storage\StorageApplication.java

    または-or-

    /users/example/home/storage/src/main/java/com/wingtiptoys/storage/StorageApplication.java

  2. テキスト エディターでメイン アプリケーションの Java ファイルを開き、ファイルに次の行を追加します。Open the main application Java file in a text editor, and add the following lines to the file. wingtiptoys を実際の値に置き換えます。Replace wingtiptoys with your values:

    package com.wingtiptoys.storage;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class StorageApplication {
       public static void main(String[] args) {
          SpringApplication.run(StorageApplication.class, args);
       }
    }
    
  3. メイン アプリケーションの Java ファイルを保存して閉じます。Save and close the main application Java file.

BLOB コントローラー クラスを追加するAdd a blob controller class

  1. アプリのパッケージ ディレクトリに、BlobController.java という名前の新しい Java ファイルを作成します。次に例を示します。Create a new Java file named BlobController.java in the package directory of your app; for example:

    C:\SpringBoot\storage\src\main\java\com\wingtiptoys\storage\BlobController.java

    または-or-

    /users/example/home/storage/src/main/java/com/wingtiptoys/storage/BlobController.java

  2. テキスト エディターで BLOB コントローラー Java ファイルを開き、ファイルに次の行を追加します。Open the blob controller Java file in a text editor, and add the following lines to the file. wingtiptoys を実際のリソース グループに変更し、storage を実際の成果物名に変更します。Change wingtiptoys to your resource group and storage to your artifact name.

    package com.wingtiptoys.storage;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.core.io.Resource;
    import org.springframework.core.io.WritableResource;
    import org.springframework.util.StreamUtils;
    import org.springframework.web.bind.annotation.*;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.nio.charset.Charset;
    
    @RestController
    @RequestMapping("blob")
    public class BlobController {
    
        @Value("${blob}")
        private Resource blobFile;
    
        @GetMapping
        public String readBlobFile() throws IOException {
            return StreamUtils.copyToString(
                    this.blobFile.getInputStream(),
                    Charset.defaultCharset());
        }
    
        @PostMapping
        public String writeBlobFile(@RequestBody String data) throws IOException {
            try (OutputStream os = ((WritableResource) this.blobFile).getOutputStream()) {
                os.write(data.getBytes());
            }
            return "file was updated";
        }
    }
    
  3. BLOB コントローラー Java ファイルを保存して閉じます。Save and close the blob controller Java file.

  4. コマンド プロンプトを開き、ディレクトリを pom.xml ファイルが置かれているフォルダーに変更します。次に例を示します。Open a command prompt and change directory to the folder where your pom.xml file is located; for example:

    cd C:\SpringBoot\storage
    

    または-or-

    cd /users/example/home/storage
    
  5. Spring Boot アプリケーションを Maven でビルドし、実行します。次に例を示します。Build your Spring Boot application with Maven and run it; for example:

    mvn clean package
    mvn spring-boot:run
    
  6. アプリケーションが実行されたら、curl を使用してアプリケーションをテストできます。次に例を示します。Once your application is running, you can use curl to test your application; for example:

    a.a. POST 要求を送信して、ファイルの内容を更新します。Send a POST request to update a file's contents:

    curl -d 'new message' -H 'Content-Type: text/plain' localhost:8080/blob
    

    ファイルが更新されたことを示す応答が表示されます。You should see a response that the file was updated.

    b.b. GET 要求を送信して、ファイルの内容を確認します。Send a GET request to verify the file's contents:

    curl -X GET http://localhost:8080/
    

    送信した "Hello World" というテキストが表示されます。You should see the "Hello World" text that you posted.

まとめSummary

このチュートリアルでは、 [Spring Initializr] を使用して新しい Java アプリケーションを作成し、そのアプリケーションに Azure Storage スターターを追加した後、アプリケーションを構成して Azure ストレージ アカウントに BLOB をアップロードしました。In this tutorial, you created a new Java application using the [Spring Initializr], added the Azure storage starter to your application, and then configured your application to upload a blob to your Azure storage account.

リソースをクリーンアップするClean up resources

予想外の課金を防ぐために、この記事で作成したリソースが不要になったら、Azure portal を使用して削除してください。When no longer needed, use the Azure portal to delete the resources created in this article to avoid unexpected charges.

次のステップNext steps

Spring および Azure の詳細については、Azure ドキュメント センターで引き続き Spring に関するドキュメントをご確認ください。To learn more about Spring and Azure, continue to the Spring on Azure documentation center.

その他のリソースAdditional Resources

Microsoft Azure で利用できるその他の Spring Boot Starter の詳細については、「Azure 向けの Spring Boot Starter」をご覧ください。For more information about the additional Spring Boot Starters that are available for Microsoft Azure, see Spring Boot Starters for Azure.

Spring Boot アプリケーションから呼び出すことができるその他の Azure Storage API の詳細については、次の記事をご覧ください。For detailed information about additional Azure storage APIs that you can call from your Spring Boot applications, see the following articles: