Een bestand uploaden naar een Azure Blob Storage

In deze zelfstudie leert u hoe u container-blobs kunt uploaden en lezen in een Azure Blob Storage-account vanuit een Spring Boot-toepassing.

Azure Blob Storage is de oplossing voor objectopslag van Microsoft voor de cloud. Blob Storage is geoptimaliseerd voor het opslaan van een enorme hoeveelheid ongestructureerde gegevens, zoals tekst of binaire gegevens.

Vereisten

  • Een Azure-abonnement (u kunt een gratis abonnement maken).
  • Java Development Kit (JDK) versie 8 of hoger.
  • Apache Maven, versie 3.0 of hoger.
  • cURL of een vergelijkbaar HTTP-hulpprogramma om de functionaliteit te testen.
  • Een Azure-opslagaccount en -container. Als u er nog geen hebt, maakt u een opslagaccount.
  • Een Spring Boot-toepassing. Als u er nog geen hebt, maakt u een Maven-project met de Spring Initializr. Zorg ervoor dat u Maven Project selecteert en onder Afhankelijkheden de Spring Web-afhankelijkheid toevoegt en vervolgens Java-versie 8 of hoger selecteert.

Notitie

Als u uw account toegang wilt verlenen tot resources, wijst u in uw zojuist gemaakte Azure Storage-account de Storage Blob Data Contributor rol toe aan het Microsoft Entra-account dat u momenteel gebruikt. Zie voor meer informatie Azure-rollen toewijzen met behulp van de Azure-portal.

Belangrijk

Spring Boot versie 2.5 of hoger is vereist om de stappen in deze zelfstudie uit te voeren.

Een container maken

Maak eerst een container met de naam testcontainer door de instructies in quickstart te volgen: Blobs uploaden, downloaden en vermelden met azure Portal.

Blobs uploaden en lezen vanuit een Azure Storage-accountcontainer

Nu u een Azure Storage-account en -container hebt, kunt u bestanden uploaden en lezen vanuit blobs met Spring Cloud Azure.

Als u de Spring Cloud Azure Storage Blob Starter-module wilt installeren, voegt u de volgende afhankelijkheden toe aan uw pom.xml-bestand :

  • De Spring Cloud Azure Bill of Materials (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>
    

    Notitie

    Als u Spring Boot 2.x gebruikt, moet u de spring-cloud-azure-dependencies versie instellen op 4.17.0. Deze stuklijst (Bill of Material) moet worden geconfigureerd in de <dependencyManagement> sectie van uw pom.xml-bestand . Dit zorgt ervoor dat alle Spring Cloud Azure-afhankelijkheden dezelfde versie gebruiken. Zie welke versie van Spring Cloud Azure moet ik gebruiken voor meer informatie over de versie die voor deze BOM wordt gebruikt.

  • Het Spring Cloud Azure Storage Blob Starter-artefact:

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

De toepassing coderen

Als u bestanden uit blobs wilt uploaden en lezen met behulp van de Spring Cloud Azure Storage Blob Starter, configureert u de toepassing met behulp van de volgende stappen.

  1. Configureer een opslagaccountnaam en eindpunt in het configuratiebestand application.properties , zoals wordt weergegeven in het volgende voorbeeld.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Maak een nieuwe BlobController Java-klasse, zoals wordt weergegeven in het volgende voorbeeld. Deze klasse wordt gebruikt voor het uploaden en lezen van bestanden uit de container-blob in het Azure Storage-account.

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

    Tip

    In deze zelfstudie zijn er geen verificatiebewerkingen in de configuraties of de code. Voor het maken van verbinding met Azure-services is echter verificatie vereist. Als u de verificatie wilt voltooien, moet u Azure Identity gebruiken. Spring Cloud Azure maakt gebruik DefaultAzureCredentialvan, die de Azure Identity-bibliotheek biedt om u te helpen referenties op te halen zonder dat er codewijzigingen zijn aangebracht.

    DefaultAzureCredential ondersteunt meerdere verificatiemethoden en bepaalt welke methode tijdens runtime moet worden gebruikt. Met deze aanpak kan uw app verschillende verificatiemethoden gebruiken in verschillende omgevingen (zoals lokale en productieomgevingen) zonder omgevingsspecifieke code te implementeren. Zie DefaultAzureCredential voor meer informatie.

    Als u de verificatie in lokale ontwikkelomgevingen wilt voltooien, kunt u Azure CLI, Visual Studio Code, PowerShell of andere methoden gebruiken. Zie Azure-verificatie in Java-ontwikkelomgevingen voor meer informatie. Als u de verificatie in Azure-hostingomgevingen wilt voltooien, raden we u aan om een door de gebruiker toegewezen beheerde identiteit te gebruiken. Zie Wat zijn beheerde identiteiten voor Azure-resources? voor meer informatie.

  3. Nadat uw toepassing is uitgevoerd, gebruikt curl u om uw toepassing te testen door deze stappen uit te voeren.

    1. Verzend een POST-aanvraag om de inhoud van een bestand bij te werken met behulp van de volgende opdracht:

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

      Als het goed is, ziet u een antwoord met de tekst file was updated.

    2. Verzend een GET-aanvraag om de inhoud van het bestand te controleren met behulp van de volgende opdracht:

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

      U ziet nu de tekst 'nieuw bericht' die u hebt gepost.

Implementeren in Azure Spring Apps

Nu de Spring Boot-toepassing lokaal wordt uitgevoerd, is het tijd om deze naar productie te verplaatsen. Met Azure Spring Apps kunt u Eenvoudig Spring Boot-toepassingen implementeren in Azure zonder codewijzigingen. De service beheert de infrastructuur van Spring-toepassingen, zodat ontwikkelaars zich kunnen richten op hun code. Azure Spring Apps biedt levenscyclusbeheer met uitgebreide bewaking en diagnose, configuratiebeheer, servicedetectie, CI/CD-integratie, blauwgroene implementaties en meer. Zie Uw eerste toepassing implementeren in Azure Spring Apps om uw toepassing te implementeren in Azure Spring Apps.

Volgende stappen

Voor meer informatie over Spring en Azure gaat u door naar het documentatiecentrum van Spring op Azure.

Zie ook

Zie Wat is Spring Cloud Azure voor meer informatie over de aanvullende Spring Boot Starters die beschikbaar zijn voor Microsoft Azure ?

Zie de volgende artikelen voor meer informatie over aanvullende Azure Storage-API's die u kunt aanroepen vanuit uw Spring Boot-toepassingen: