Przekazywanie pliku do usługi Azure Blob Storage

W tym samouczku pokazano, jak przekazywać i odczytywać z kontenerów obiektów blob na koncie usługi Azure Blob Storage z poziomu aplikacji Spring Boot.

Azure Blob Storage to rozwiązanie magazynu obiektów firmy Microsoft dla chmury. Magazyn obiektów blob jest zoptymalizowany pod kątem przechowywania ogromnej ilości danych bez struktury, takich jak dane tekstowe lub binarne.

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie.
  • Zestaw Java Development Kit (JDK) w wersji 8 lub nowszej.
  • Apache Maven, wersja 3.0 lub nowsza.
  • cURL lub podobne narzędzie HTTP do testowania funkcjonalności.
  • Konto i kontener usługi Azure Storage. Jeśli go nie masz, utwórz konto magazynu.
  • Aplikacja Spring Boot. Jeśli go nie masz, utwórz projekt Maven za pomocą narzędzia Spring Initializr. Pamiętaj, aby wybrać pozycję Projekt Maven i w obszarze Zależności dodaj zależność Spring Web , a następnie wybierz pozycję Java w wersji 8 lub nowszej.

Uwaga

Aby udzielić kontu dostępu do zasobów, w nowo utworzonym koncie usługi Azure Storage przypisz Storage Blob Data Contributor rolę do aktualnie używanego konta Microsoft Entra. Aby uzyskać więcej informacji, zobacz przypisywanie ról Azure za pomocą portalu Azure.

Ważne

Do wykonania kroków opisanych w tym samouczku jest wymagana wersja 2.5 lub nowsza.

Tworzenie kontenera

Najpierw utwórz kontener o nazwie testcontainer , postępując zgodnie z instrukcjami w przewodniku Szybki start: przekazywanie, pobieranie i wyświetlanie listy obiektów blob za pomocą witryny Azure Portal.

Przekazywanie i odczytywanie obiektów blob z kontenera konta usługi Azure Storage

Teraz, gdy masz konto i kontener usługi Azure Storage, możesz przekazywać i odczytywać pliki z obiektów blob za pomocą platformy Azure Spring Cloud.

Aby zainstalować moduł Startowy obiekt blob usługi Azure Storage Spring Cloud, dodaj następujące zależności do pliku pom.xml :

  • Projekt Spring Cloud Azure Bill of Materials (BOM):

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

    Uwaga

    Jeśli używasz środowiska Spring Boot 2.x, pamiętaj, aby ustawić spring-cloud-azure-dependencies wersję na 4.18.0. Ten rachunek materiału (BOM) należy skonfigurować w <dependencyManagement> sekcji pliku pom.xml . Gwarantuje to, że wszystkie zależności platformy Azure platformy Spring Cloud korzystają z tej samej wersji. Aby uzyskać więcej informacji na temat wersji używanej dla tego modelu BOM, zobacz Która wersja platformy Spring Cloud platformy Azure powinna być używana.

  • Artefakt startowy obiektu blob usługi Azure Storage Spring Cloud:

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

Kodowanie aplikacji

Aby przekazywać i odczytywać pliki z obiektów blob przy użyciu szablonu startowego Spring Cloud Azure Storage Blob, skonfiguruj aplikację, wykonując następujące kroki.

  1. Skonfiguruj nazwę konta magazynu i punkt końcowy w pliku konfiguracji application.properties , jak pokazano w poniższym przykładzie.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Utwórz nową BlobController klasę Java, jak pokazano w poniższym przykładzie. Ta klasa służy do przekazywania i odczytywania plików z obiektu blob kontenera na koncie usługi Azure Storage.

    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";
        }
    }
    

    Napiwek

    W tym samouczku nie ma żadnych operacji uwierzytelniania w konfiguracjach ani kodzie. Jednak nawiązywanie połączenia z usługami platformy Azure wymaga uwierzytelniania. Aby ukończyć uwierzytelnianie, musisz użyć usługi Azure Identity. Platforma Spring Cloud na platformie Azure używa DefaultAzureCredentialbiblioteki tożsamości platformy Azure, która ułatwia uzyskiwanie poświadczeń bez żadnych zmian w kodzie.

    DefaultAzureCredential obsługuje wiele metod uwierzytelniania i określa, która metoda ma być używana w czasie wykonywania. Takie podejście umożliwia aplikacji używanie różnych metod uwierzytelniania w różnych środowiskach (takich jak środowiska lokalne i produkcyjne) bez implementowania kodu specyficznego dla środowiska. Aby uzyskać więcej informacji, zobacz DefaultAzureCredential.

    Aby ukończyć uwierzytelnianie w lokalnych środowiskach deweloperskich, możesz użyć interfejsu wiersza polecenia platformy Azure, programu Visual Studio Code, programu PowerShell lub innych metod. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie platformy Azure w środowiskach deweloperskich Java. Aby ukończyć uwierzytelnianie w środowiskach hostingu platformy Azure, zalecamy użycie tożsamości zarządzanej przypisanej przez użytkownika. Aby uzyskać więcej informacji, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure?

  3. Po uruchomieniu aplikacji użyj polecenia curl , aby przetestować aplikację, wykonując następujące kroki.

    1. Wyślij żądanie POST, aby zaktualizować zawartość pliku przy użyciu następującego polecenia:

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

      Powinna zostać wyświetlona odpowiedź z informacją file was updated.

    2. Wyślij żądanie GET, aby zweryfikować zawartość pliku przy użyciu następującego polecenia:

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

      Powinien zostać wyświetlony tekst "nowa wiadomość", który został opublikowany.

Wdrażanie w usłudze Azure Spring Apps

Teraz, gdy aplikacja Spring Boot działa lokalnie, nadszedł czas, aby przenieść ją do środowiska produkcyjnego. Usługa Azure Spring Apps ułatwia wdrażanie aplikacji Spring Boot na platformie Azure bez żadnych zmian w kodzie. Usługa zarządza infrastrukturą aplikacji Spring, aby deweloperzy mogli skupić się na swoim kodzie. Usługa Azure Spring Apps zapewnia zarządzanie cyklem życia przy użyciu kompleksowego monitorowania i diagnostyki, zarządzania konfiguracją, odnajdywania usług, integracji/ciągłego wdrażania, wdrożeń niebieskich zielonych i nie tylko. Aby wdrożyć aplikację w usłudze Azure Spring Apps, zobacz Wdrażanie pierwszej aplikacji w usłudze Azure Spring Apps.

Następne kroki

Aby dowiedzieć się więcej na temat oprogramowania Spring i platformy Azure, przejdź do centrum dokumentacji dotyczącej oprogramowania Spring na platformie Azure.

Zobacz też

Aby uzyskać więcej informacji na temat dodatkowych szablonów startowych Spring Boot dostępnych dla platformy Microsoft Azure, zobacz Co to jest platforma Spring Cloud Azure?

Aby uzyskać więcej informacji na temat dodatkowych interfejsów API usługi Azure Storage, które można wywołać z aplikacji Spring Boot, zobacz następujące artykuły: