Ladda upp en fil till en Azure Blob Storage

Den här självstudien visar hur du laddar upp och läser från containerblobar i ett Azure Blob Storage-konto från ett Spring Boot-program.

Azure Blob Storage är Microsofts objektlagringslösning för molnet. Blob Storage är optimerat för lagring av en enorm mängd ostrukturerade data, till exempel text eller binära data.

Förutsättningar

Kommentar

Om du vill ge ditt konto åtkomst till resurser i ditt nyligen skapade Azure Storage-konto tilldelar Storage Blob Data Contributor du rollen till det Microsoft Entra-konto som du använder för närvarande. Mer information finns i Tilldela Azure-roller med Azure-portalen.

Viktigt!

Spring Boot version 2.5 eller senare krävs för att slutföra stegen i den här självstudien.

Skapa en container

Skapa först en container med namnet testcontainer genom att följa anvisningarna i Snabbstart: Ladda upp, ladda ned och lista blobar med Azure-portalen.

Ladda upp och läsa blobar från Azure Storage-kontocontainer

Nu när du har ett Azure Storage-konto och en container kan du ladda upp och läsa filer från blobar med Spring Cloud Azure.

Om du vill installera Spring Cloud Azure Storage Blob Starter-modulen lägger du till följande beroenden i din pom.xml-fil :

  • 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>
    

    Kommentar

    Om du använder Spring Boot 2.x måste du ange spring-cloud-azure-dependencies versionen till 4.18.0. Den här strukturlistan (BOM) bör konfigureras i avsnittet i <dependencyManagement> din pom.xml-fil . Detta säkerställer att alla Spring Cloud Azure-beroenden använder samma version. Mer information om vilken version som används för den här strukturlistan finns i Vilken version av Spring Cloud Azure ska jag använda.

  • Spring Cloud Azure Storage Blob Starter-artefakten:

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

Koda appen

Om du vill ladda upp och läsa filer från blobar med hjälp av Spring Cloud Azure Storage Blob Starter konfigurerar du programmet med hjälp av följande steg.

  1. Konfigurera ett lagringskontonamn och en slutpunkt i konfigurationsfilen application.properties , som du ser i följande exempel.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Skapa en ny BlobController Java-klass enligt följande exempel. Den här klassen används för att ladda upp och läsa filer från containerbloben i Azure Storage-kontot.

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

    Dricks

    I den här självstudien finns det inga autentiseringsåtgärder i konfigurationerna eller koden. Att ansluta till Azure-tjänster kräver dock autentisering. För att slutföra autentiseringen måste du använda Azure Identity. Spring Cloud Azure använder DefaultAzureCredential, som Azure Identity-biblioteket tillhandahåller för att hjälpa dig att få autentiseringsuppgifter utan några kodändringar.

    DefaultAzureCredential stöder flera autentiseringsmetoder och avgör vilken metod som ska användas vid körning. Med den här metoden kan din app använda olika autentiseringsmetoder i olika miljöer (till exempel lokala miljöer och produktionsmiljöer) utan att implementera miljöspecifik kod. Mer information finns i DefaultAzureCredential.

    För att slutföra autentiseringen i lokala utvecklingsmiljöer kan du använda Azure CLI, Visual Studio Code, PowerShell eller andra metoder. Mer information finns i Azure-autentisering i Java-utvecklingsmiljöer. För att slutföra autentiseringen i Azure-värdmiljöer rekommenderar vi att du använder användartilldelad hanterad identitet. Mer information finns i Vad är hanterade identiteter för Azure-resurser?

  3. När programmet har körts använder du curl för att testa programmet genom att följa dessa steg.

    1. Skicka en POST-begäran om att uppdatera en fils innehåll med hjälp av följande kommando:

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

      Du bör se ett svar som säger file was updated.

    2. Skicka en GET-begäran för att verifiera filens innehåll med hjälp av följande kommando:

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

      Du bör se texten "nytt meddelande" som du har publicerat.

Distribuera till Azure Spring Apps

Nu när Spring Boot-programmet körs lokalt är det dags att flytta det till produktion. Azure Spring Apps gör det enkelt att distribuera Spring Boot-program till Azure utan några kodändringar. Tjänsten hanterar infrastrukturen för Spring-program så att utvecklare kan fokusera på sin kod. Azure Spring Apps tillhandahåller livscykelhantering med omfattande övervakning och diagnostik, konfigurationshantering, tjänstidentifiering, CI/CD-integrering, blågröna distributioner med mera. Information om hur du distribuerar ditt program till Azure Spring Apps finns i Distribuera ditt första program till Azure Spring Apps.

Nästa steg

Om du vill veta mer om Spring och Azure kan du fortsätta till dokumentationscentret för Spring i Azure.

Se även

Mer information om de ytterligare Spring Boot Starter som är tillgängliga för Microsoft Azure finns i Vad är Spring Cloud Azure?

Mer information om ytterligare Azure Storage-API:er som du kan anropa från dina Spring Boot-program finns i följande artiklar: