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

概要Overview

この記事では、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

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

  2. [+ リソースの作成] をクリックし、 [Storage][ストレージ アカウント] の順にクリックします。Click +Create a resource, then Storage, and then click Storage Account.

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

  3. [名前空間の作成] ページで、次の情報を入力します。On the Create Namespace page, enter the following information:

    • 一意の名前を入力します。この名前は、ストレージ アカウントの URI の一部になります。Enter a unique 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.
    • [アカウントの種類][Blob Storage] を選択します。Choose Blob storage for the Account kind.
    • ストレージ アカウントの場所を指定します。Specify the Location for your storage account.
    • ストレージ アカウントに使用するサブスクリプションを選択します。Choose the Subscription you want to use for your storage account.
    • ストレージ アカウントの新しいリソース グループを作成するか、既存のリソース グループを選択するかを指定します。Specify whether to create a new Resource group for your storage account, or choose an existing resource group.

    Azure ストレージ アカウントのオプションを指定する

  4. 上記のオプションを指定したら、 [作成] をクリックしてストレージ アカウントを作成します。When you have specified the options listed above, click Create to create your storage account.

  5. Azure portal でストレージ アカウントが作成されたら、 [BLOB] をクリックし、 [+ コンテナー] をクリックします。When the Azure portal has created your storage account, click Blobs, then click +Container.

    BLOB コンテナーを作成する

  6. BLOB コンテナーの名前を入力し、 [OK] をクリックします。Enter a Name for your blob container, and then click OK.

    BLOB コンテナーのオプションを指定する

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

    BLOB コンテナーの一覧の表示

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

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

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

    • JavaMaven プロジェクトを生成します。Generate a Maven project with Java.

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

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

    • Web 依存関係を追加します。Add the 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. 上記のオプションを指定したら、 [Generate Project](プロジェクトの生成) をクリックします。When you have specified the options listed above, click Generate Project.

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

    Spring プロジェクトをダウンロードする

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

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

  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-azure-starter-storage</artifactId>
       <version>1.0.0.M2</version>
    </dependency>
    

    pom.xml ファイルを編集する

  3. pom.xml ファイルを保存して閉じます。Save and close the pom.xml file.

Azure 資格情報ファイルを作成するCreate an 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

  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=West US
    spring.cloud.azure.storage.account=wingtiptoysstorage
    

    各値の説明: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.
  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:

    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.

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

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

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

    または-or-

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

  2. テキスト エディターで Web コントローラー Java ファイルを開き、ファイルに次の行を追加します。Open the web controller Java file in a text editor, and add the following lines to the file:

    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.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.nio.charset.Charset;
    
    @RestController
    public class WebController {
    
       @Value("blob://test/myfile.txt")
       private Resource blobFile;
    
       @GetMapping(value = "/")
       public String readBlobFile() throws IOException {
          return StreamUtils.copyToString(
             this.blobFile.getInputStream(),
             Charset.defaultCharset()) + "\n";
       }
    
       @PostMapping(value = "/")
       public String writeBlobFile(@RequestBody String data) throws IOException {
          try (OutputStream os = ((WritableResource) this.blobFile).getOutputStream()) {
             os.write(data.getBytes());
          }
          return "File was updated.\n";
       }
    }
    

    @Value("blob://[container]/[blob]") 構文では、データを格納するコンテナーと BLOB の名前をそれぞれ定義します。Where the @Value("blob://[container]/[blob]") syntax respectively defines the names of the container and blob where you want to store the data.

  3. Web コントローラー Java ファイルを保存して閉じます。Save and close the web 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 -X POST -H "Content-Type: text/plain" -d "Hello World" http://localhost:8080/
    

    ファイルが更新されたことを示す応答が表示されます。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.

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