Teilen über


Datei in einen Azure Blob Storage hochladen

In diesem Lernprogramm erfahren Sie, wie Sie Container-Blobs in einem Azure Blob Storage-Konto aus einer Spring Boot-Anwendung hochladen und lesen.

Azure Blob Storage ist die Objektspeicherlösung von Microsoft für die Cloud. Blob Storage ist für die Speicherung großer Mengen unstrukturierter Daten, wie Text- oder Binärdaten, optimiert.

Voraussetzungen

  • Azure-Abonnement (kostenloses Abonnement erstellen)
  • Java Development Kit (JDK) Version 8 oder höher.
  • Apache Maven Version 3.0 oder höher.
  • cURL oder ein ähnliches HTTP-Hilfsprogramm zum Testen der Funktionalität.
  • Ein Azure-Speicherkonto und ein Container. Erstellen Sie ein Speicherkonto, falls Sie noch keines besitzen.
  • Ein Spring Boot-Anwendung. Wenn Sie keine Spring Boot-Anwendung besitzen, erstellen Sie mit Spring Initializr ein Maven-Projekt. Achten Sie darauf, Maven Project (Maven-Projekt) auszuwählen, fügen Sie unter Dependencies (Abhängigkeiten) die Abhängigkeit Spring Web hinzu, und wählen Sie dann Java-Version 8 oder höher aus.

Hinweis

Um Ihrem Konto Zugriff auf Ressourcen zu gewähren, weisen Sie in Ihrem neu erstellten Azure Storage-Konto die Storage Blob Data Contributor-Rolle dem Microsoft Entra-Konto zu, das Sie derzeit verwenden. Weitere Informationen finden Sie unter Weisen Sie Azure-Rollen über das Azure-Portal zu.

Wichtig

Für die Schritte in diesem Tutorial wird mindestens die Spring Boot-Version 2.5 benötigt.

Container erstellen

Erstellen Sie zunächst einen Container mit dem Namen testcontainer nach den Anweisungen in der Schnellstartanleitung: Hochladen, Herunterladen und Listen-Blobs mit dem Azure-Portal.

Hochladen und Lesen von Blobs aus dem Azure Storage-Kontocontainer

Nachdem Sie nun über ein Azure Storage-Konto und einen Container verfügen, können Sie Dateien aus Blobs mit Spring Cloud Azure hochladen und lesen.

Um das Spring Cloud Azure Storage Blob-Startermodul zu installieren, fügen Sie Ihrer pom.xml-Datei die folgenden Abhängigkeiten hinzu:

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

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

    Hinweis

    Wenn Sie Spring Boot 2.x verwenden, stellen Sie sicher, dass Sie die spring-cloud-azure-dependencies Version auf 4.19.0 festlegen. Diese Stückliste (Bill of Material, BOM) sollte im <dependencyManagement> Abschnitt Ihrer pom.xml Datei konfiguriert werden. Dadurch wird sichergestellt, dass alle Spring Cloud Azure-Abhängigkeiten dieselbe Version verwenden. Weitere Informationen zu der Version, die für diese BOM verwendet wird, finden Sie unter Welche Version von Spring Cloud Azure sollte ich verwenden.

  • Das Spring Cloud Azure Storage Blob Starter Artefakt:

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

Codieren der Anwendung

Um Dateien aus Blobs mithilfe des Spring Cloud Azure Storage Blob Starter hochzuladen und zu lesen, konfigurieren Sie die Anwendung mithilfe der folgenden Schritte.

  1. Konfigurieren Sie einen Speicherkontonamen und einen Endpunkt in der Konfigurationsdatei application.properties, wie im folgenden Beispiel gezeigt.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Erstellen Sie eine neue BlobController Java-Klasse, wie im folgenden Beispiel gezeigt. Diese Klasse wird verwendet, um Dateien aus dem Container-Blob im Azure Storage-Konto hochzuladen und zu lesen.

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

    Tipp

    In diesem Lernprogramm gibt es keine Authentifizierungsvorgänge in den Konfigurationen oder im Code. Für die Verbindung mit dem Azure-Diensten ist jedoch eine Authentifizierung erforderlich. Um die Authentifizierung abzuschließen, müssen Sie Azure Identity verwenden. Spring Cloud Azure verwendet DefaultAzureCredential, was die Azure Identity-Bibliothek bereitstellt, um Sie beim Abrufen von Anmeldeinformationen ohne Codeänderungen zu unterstützen.

    DefaultAzureCredential“ unterstützt mehrere Authentifizierungsmethoden und bestimmt, welche Methode zur Laufzeit verwendet wird. Mit diesem Ansatz kann Ihre Anwendung verschiedene Authentifizierungsmethoden in unterschiedlichen Umgebungen verwenden (z. B. in lokalen oder Produktionsumgebungen), ohne dass umgebungsspezifischer Code implementiert werden muss. Weitere Informationen finden Sie unter DefaultAzureCredential.

    Um die Authentifizierung in lokalen Entwicklungsumgebungen abzuschließen, können Sie Azure CLI, Visual Studio Code, PowerShell oder andere Methoden verwenden. Weitere Informationen finden Sie unter Azure-Authentifizierung in Java-Entwicklungsumgebungen. Um die Authentifizierung in Azure-Hostingumgebungen abzuschließen, empfehlen wir die Verwendung einer benutzerzugewiesenen verwalteten Identität. Weitere Informationen finden Sie unter Was sind verwaltete Identitäten für Azure-Ressourcen?.

  3. Nachdem Ihre Anwendung ausgeführt wurde, verwenden Sie curl diese Schritte, um Ihre Anwendung zu testen.

    1. Senden Sie eine POST-Anforderung, um den Inhalt einer Datei mithilfe des folgenden Befehls zu aktualisieren:

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

      Sie sollten eine Antwort erhalten, die lautet file was updated.

    2. Senden Sie eine GET-Anforderung, um den Inhalt der Datei mithilfe des folgenden Befehls zu verifizieren:

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

      Der Text der „neuen Nachricht“, die Sie gepostet haben, sollte angezeigt werden.

Bereitstellen in Azure Spring Apps

Nachdem Sie nun die Spring Boot-Anwendung lokal ausgeführt haben, ist es an der Zeit, sie in die Produktion zu verschieben. Mit Azure Spring Apps lassen sich Spring Boot-Anwendungen ganz einfach und ohne Codeänderungen in Azure bereitstellen. Der Dienst verwaltet die Infrastruktur von Spring-Anwendungen und ermöglicht es Entwicklern dadurch, sich auf ihren Code zu konzentrieren. Azure Spring Apps bietet eine Lebenszyklusverwaltung mit umfassender Überwachung und Diagnose, Konfigurationsverwaltung, Dienstermittlung, CI/CD-Integration, Blau/Grün-Bereitstellungen und mehr. Informationen zum Bereitstellen Ihrer Anwendung in Azure Spring Apps finden Sie unter Bereitstellen Ihrer ersten Anwendung in Azure Spring Apps.

Nächste Schritte

Weitere Informationen zu Spring und Azure finden Sie im Dokumentationscenter zu Spring in Azure.

Siehe auch

Weitere Informationen zu weiteren verfügbaren Spring Boot Starter-Optionen für Microsoft Azure finden Sie unter Was ist Spring Cloud Azure?

Weitere Informationen zu weiteren Azure Storage-APIs, die Sie über Ihre Spring Boot-Anwendungen aufrufen können, finden Sie in den folgenden Artikeln: