Отправка файла в Хранилище BLOB-объектов Azure

В этом руководстве показано, как отправлять и читать из больших двоичных объектов контейнеров в учетной записи Хранилище BLOB-объектов Azure из приложения Spring Boot.

Хранилище BLOB-объектов Azure — это решение корпорации Майкрософт для хранения объектов в облаке. Хранилище BLOB-объектов оптимизировано для хранения большого количества неструктурированных данных, таких как текстовые или двоичные данные.

Необходимые компоненты

Примечание.

Чтобы предоставить учетным записям доступ к ресурсам, в созданной учетной записи служба хранилища Azure назначьте Storage Blob Data Contributor роль учетной записи Microsoft Entra, которую вы используете. Дополнительные сведения см. в разделе Назначение ролей Azure с помощью портала Azure.

Внимание

Для выполнения действий, описанных в этом руководстве, требуется Spring Boot версии 2.5 или более поздней.

Создание контейнера

Сначала создайте контейнер с именемtestcontainer, следуя инструкциям в кратком руководстве. Отправка, скачивание и перечисление больших двоичных объектов с помощью портал Azure.

Отправка и чтение BLOB-объектов из контейнера учетной записи служба хранилища Azure

Теперь, когда у вас есть служба хранилища Azure учетная запись и контейнер, вы можете отправлять и считывать файлы из больших двоичных объектов с помощью Spring Cloud Azure.

Чтобы установить модуль Начального blob-объекта Spring Cloud служба хранилища Azure, добавьте следующие зависимости в файл pom.xml:

  • Выставление счетов за материалы Spring Cloud (BOM):

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>5.11.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Примечание.

    Если вы используете Spring Boot 2.x, обязательно установите для нее spring-cloud-azure-dependencies значение 4.17.0. Этот счет материалов (BOM) должен быть настроен в <dependencyManagement> разделе pom.xml файла. Это гарантирует, что все зависимости Azure Spring Cloud используют одну и ту же версию. Дополнительные сведения о версии, используемой для этого BOM, см. в статье "Какая версия Spring Cloud Azure должна использоваться".

  • Артефакт Начального blob-объекта Spring Cloud служба хранилища Azure:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-storage-blob</artifactId>
    </dependency>
    

Добавление кода приложения

Чтобы отправить и считывать файлы из больших двоичных объектов с помощью начального средства Spring Cloud служба хранилища Azure BLOB-объектов, настройте приложение, выполнив следующие действия.

  1. Настройте имя служба хранилища учетной записи и конечную точку в файле конфигурации application.properties, как показано в следующем примере.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Создайте класс BlobController Java, как показано в следующем примере. Этот класс используется для отправки и чтения файлов из большого двоичного объекта контейнера в учетной записи служба хранилища Azure.

    package com.example.demo;
    
    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("azure-blob://testcontainer/test.txt")
        private Resource blobFile;
    
        @GetMapping("/readBlobFile")
        public String readBlobFile() throws IOException {
            return StreamUtils.copyToString(
                    this.blobFile.getInputStream(),
                    Charset.defaultCharset());
        }
    
        @PostMapping("/writeBlobFile")
        public String writeBlobFile(@RequestBody String data) throws IOException {
            try (OutputStream os = ((WritableResource) this.blobFile).getOutputStream()) {
                os.write(data.getBytes());
            }
            return "file was updated";
        }
    }
    

    Совет

    В этом руководстве нет операций проверки подлинности в конфигурациях или коде. Однако для подключения к службам Azure требуется проверка подлинности. Чтобы завершить проверку подлинности, необходимо использовать удостоверение Azure. Spring Cloud Azure использует DefaultAzureCredentialбиблиотеку удостоверений Azure, чтобы получить учетные данные без каких-либо изменений кода.

    DefaultAzureCredential поддерживает несколько методов проверки подлинности и определяет, какой метод следует использовать во время выполнения. Этот подход позволяет приложению использовать различные методы проверки подлинности в разных средах (например, локальных и рабочих средах), не реализуя код, зависящий от среды. Дополнительные сведения см. в разделе DefaultAzureCredential.

    Для выполнения проверки подлинности в локальных средах разработки можно использовать Azure CLI, Visual Studio Code, PowerShell или другие методы. Дополнительные сведения см. в статье о проверке подлинности Azure в средах разработки Java. Чтобы завершить проверку подлинности в средах размещения Azure, рекомендуется использовать управляемое удостоверение, назначаемое пользователем. См. сведения об управляемых удостоверениях для ресурсов Azure.

  3. После запуска приложения используйте curl для тестирования приложения, выполнив следующие действия.

    1. Отправьте запрос POST для обновления содержимого файла с помощью следующей команды:

      curl http://localhost:8080/blob/writeBlobFile -d "new message" -H "Content-Type: text/plain"
      

      Вы увидите ответ, который говорит file was updated.

    2. Отправьте запрос GET, чтобы проверить содержимое файла с помощью следующей команды:

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

      Вы должны увидеть опубликованный текст "новое сообщение".

Развертывание в Azure Spring Apps

Теперь, когда у вас есть приложение Spring Boot, работающее локально, пришло время переместить его в рабочую среду. Azure Spring Apps упрощает развертывание приложений Spring Boot в Azure без каких-либо изменений кода. Эта служба управляет инфраструктурой приложений Spring, благодаря чему разработчики могут сосредоточиться на коде. Azure Spring Apps обеспечивает управление жизненным циклом за счет комплексного мониторинга и диагностики, управления конфигурацией, обнаружения служб, интеграции CI/CD, выполнения сине-зеленых развертываний и прочего. Сведения о развертывании приложения в Azure Spring Apps см. в статье "Развертывание первого приложения в Azure Spring Apps".

Следующие шаги

Дополнительные сведения о Spring и Azure см. в центре документации об использовании Spring в Azure.

См. также

Дополнительные сведения о дополнительных начальных средах Spring Boot, доступных для Microsoft Azure, см. в статье "Что такое Spring Cloud Azure?

Дополнительные сведения о дополнительных API службы хранилища Azure, которые можно вызвать из приложений Spring Boot, см. в следующих статьях: