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
- En Azure-prenumeration – skapa en kostnadsfritt.
- Java Development Kit (JDK) version 8 eller senare.
- Apache Maven, version 3.0 eller senare.
- cURL eller ett liknande HTTP-verktyg för att testa funktioner.
- Ett Azure Storage-konto och en container. Om du inte har ett skapar du ett lagringskonto.
- Ett Spring Boot-program. Om du inte har ett skapar du ett Maven-projekt med Spring Initializr. Se till att välja Maven Project och under Beroenden lägger du till Spring Web-beroendet och väljer sedan Java version 8 eller senare.
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 Portal.
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.18.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 till4.19.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.
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}
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?
När programmet har körts använder du
curl
för att testa programmet genom att följa dessa steg.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
.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: