Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Starten Sie mit der Quarkus-Erweiterung für Azure Blob Storage, um Blobs und Container zu verwalten. In diesem Artikel führen Sie die Schritte aus, um Beispielcode für grundlegende Aufgaben auszuprobieren.
Referenzdokumentation | Quellcode | der BibliothekPaket (Maven) | Probe
Voraussetzungen
- Azure-Konto mit einem aktiven Abonnement – erstellen Sie kostenlos ein Konto.
- Azure CLI – Installieren Sie die Azure CLI 2.62.0 oder höher, um Azure CLI-Befehle auszuführen.
- Azure Storage-Konto – erstellen Sie ein Speicherkonto.
- Java Development Kit (JDK) Version 17 oder höher.
- Apache Maven.
Einrichten
Dieser Abschnitt führt Sie durch die Vorbereitung eines Projekts zur Arbeit mit den Quarkus-Erweiterungen für Azure Blob Storage.
Herunterladen der Beispielanwendung
Die Beispielanwendung, die in diesem Schnellstart verwendet wird, ist eine einfache Quarkus-Anwendung.
Verwenden Sie Git, um eine Kopie der Anwendung in Ihre Entwicklungsumgebung herunterzuladen, und navigieren Sie in das storage-blob-quarkus-Verzeichnis.
git clone https://github.com/Azure-Samples/quarkus-azure.git
cd quarkus-azure
git checkout 2025-01-20
cd storage-blob-quarkus
Authentifizieren bei Azure und Autorisieren des Zugriffs auf BLOB-Daten
Anwendungsanforderungen an Azure Blob Storage müssen autorisiert sein. Die Verwendung DefaultAzureCredential und die Azure Identity-Clientbibliothek ist der empfohlene Ansatz für die Implementierung kennwortloser Verbindungen mit Azure-Diensten in Ihrem Code, einschließlich Blob Storage. Diese Vorgehensweise wird durch die Erweiterung Von Quarkus für Azure-Dienste unterstützt.
DefaultAzureCredential ist eine Implementierung der Anmeldeinformationskette, die von der Azure Identity-Clientbibliothek für Java bereitgestellt wird. „DefaultAzureCredential“ unterstützt mehrere Authentifizierungsmethoden und bestimmt, welche Methode zur Laufzeit verwendet wird. Mit diesem Ansatz kann Ihre App unterschiedliche Authentifizierungsmethoden in verschiedenen Umgebungen (lokal im Vergleich zur Produktion) verwenden, ohne umgebungsspezifischen Code zu implementieren.
Die Reihenfolge und Speicherorte, in denen nach Anmeldeinformationen gesucht wird, DefaultAzureCredential finden Sie in der Übersicht über die Azure Identity-Bibliothek.
In dieser Schnellstartanleitung authentifiziert sich Ihre App bei der lokalen Ausführung mit Ihren Azure CLI-Anmeldeinformationen. Nachdem sie in Azure bereitgestellt wurde, kann Ihre App dann eine verwaltete Identität verwenden. Für diesen Übergang zwischen Umgebungen sind keine Codeänderungen erforderlich.
Rollen Ihrem Microsoft Entra-Benutzerkonto zuweisen
Stellen Sie beim lokalen Entwickeln sicher, dass das Benutzerkonto, das auf BLOB-Daten zugreift, über die richtigen Berechtigungen verfügt. Zum Lesen und Schreiben von BLOB-Daten benötigen Sie einen Storage Blob Data-Mitwirkenden . Um sich selbst diese Rolle zuweisen zu können, benötigen Sie die Rolle Benutzerzugriffsadministrator oder eine andere Rolle, die die Aktion Microsoft.Authorization/roleAssignments/Write enthält. Sie können einem Benutzer Azure RBAC-Rollen über das Azure-Portal, die Azure CLI oder mit Azure PowerShell zuweisen. Weitere Informationen zur Rolle " Storage Blob Data Contributor " finden Sie unter "Storage Blob Data Contributor". Weitere Informationen zu den verfügbaren Bereichen für Rollenzuweisungen finden Sie unter Grundlegendes zum Bereich für Azure RBAC.
In diesem Szenario weisen Sie Ihrem Benutzerkonto Berechtigungen zu, die auf das Speicherkonto festgelegt sind, um dem Prinzip der geringsten Rechte zu folgen. Auf diese Weise erhalten Benutzer nur die erforderlichen Mindestberechtigungen, und es entstehen sicherere Produktionsumgebungen.
Im folgenden Beispiel wird Ihrem Benutzerkonto die Rolle " Storage Blob Data Contributor" zugewiesen, die sowohl Lese- als auch Schreibzugriff auf BLOB-Daten in Ihrem Speicherkonto bietet.
Von Bedeutung
In den meisten Fällen dauert es eine oder zwei Minute(n), bis die Rollenzuweisung in Azure weitergegeben wird. In seltenen Fällen kann es aber bis zu acht Minuten dauern. Wenn bei der ersten Ausführung Ihres Codes Authentifizierungsfehler auftreten, warten Sie einige Momente, und versuchen Sie es dann erneut.
Suchen Sie im Azure-Portal Ihr Speicherkonto mithilfe der Hauptsuchleiste oder der linken Navigationsleiste.
Wählen Sie auf der Übersichtsseite des Speicherkontos im linken Menü die Zugriffssteuerung (IAM) aus.
Wählen Sie auf der Seite Zugriffssteuerung (IAM) die Registerkarte Rollenzuweisungen aus.
Wählen Sie im oberen Menü +Hinzufügen aus, und fügen Sie dann die Rollenzuweisung aus dem resultierenden Dropdownmenü hinzu.
Über das Suchfeld können Sie die Ergebnisse für die gewünschte Rolle filtern. Suchen Sie in diesem Beispiel nach "Storage Blob Data Contributor ", und wählen Sie das übereinstimmende Ergebnis aus, und wählen Sie dann "Weiter" aus.
Wählen Sie unter Zugriff zuweisen zu die Option Benutzer, Gruppe oder Dienstprinzipal und dann die Option + Mitglieder auswählen aus.
Suchen Sie im Dialogfeld nach Ihrem Microsoft Entra-Benutzernamen (in der Regel Ihre user@domain-E-Mail-Adresse), und wählen Sie dann unten im Dialogfeld Auswählen aus.
Wählen Sie Überprüfen und zuweisen aus, um zur letzten Seite zu gelangen, und wählen Sie erneut Überprüfen und zuweisen aus, um den Vorgang abzuschließen.
Melden Sie sich an, und verbinden Sie Ihren App-Code mit Azure mithilfe von DefaultAzureCredential
Sie können den Zugriff auf Daten in Ihrem Speicherkonto mit den folgenden Schritten autorisieren:
Stellen Sie sicher, dass Sie mit demselben Microsoft Entra-Konto authentifiziert sind, dem Sie die Rolle für Ihr Speicherkonto zugewiesen haben. Das folgende Beispiel zeigt, wie Sie sich über die Azure CLI authentifizieren:
az loginStellen Sie sicher, dass Sie den Endpunkt Ihres Azure Blob Storage-Kontos bereitstellen. Das folgende Beispiel zeigt, wie Der Endpunkt mithilfe der Umgebungsvariable
QUARKUS_AZURE_STORAGE_BLOB_ENDPOINTüber die Azure CLI festgelegt wird. Ersetzen Sie<resource-group-name>und<storage-account-name>durch die Namen Ihrer Ressourcengruppe und Ihres Speicherkontos, bevor Sie den Befehl ausführen:export QUARKUS_AZURE_STORAGE_BLOB_ENDPOINT=$(az storage account show \ --resource-group <resource-group-name> \ --name <storage-account-name> \ --query 'primaryEndpoints.blob' \ --output tsv)
Hinweis
Wenn Ihre App in Azure bereitgestellt wird, müssen Sie die verwaltete Identität in Ihrer App aktivieren und Ihr Speicherkonto so konfigurieren, dass der verwalteten Identität die Verbindung erlaubt wird. Weitere Informationen zum Konfigurieren dieser Verbindung zwischen Azure-Diensten finden Sie unter Authentifizieren von von Azure gehosteten Java-Anwendungen.
Beispiel ausführen
Im Codebeispiel werden die folgenden Aktionen ausgeführt:
- Fügt ein Clientobjekt ein, das bereits für den Datenzugriff autorisiert ist, mithilfe der Quarkus-Erweiterung für Azure Blob Storage über
DefaultAzureCredential. - Erstellt einen Container in einem Speicherkonto.
- Lädt einen Blob in den Container hoch.
- Listet die Blobs im Container auf.
- Lädt die BLOB-Daten in das lokale Dateisystem herunter.
- Löscht die blob- und containerressourcen, die von der App erstellt wurden.
- Löscht die lokale Quelle und heruntergeladene Dateien.
Führen Sie die Anwendung im JVM-Modus mithilfe des folgenden Befehls aus:
mvn package
java -jar ./target/quarkus-app/quarkus-run.jar
Die Ausgabe der App ähnelt dem folgenden Beispiel (UUID-Werte werden aus Gründen der Lesbarkeit weggelassen):
Uploading to Blob storage as blob:
https://mystorageacct.blob.core.windows.net/quickstartblobsUUID/quickstartUUID.txt
Listing blobs...
quickstartUUID.txt
Downloading blob to
./data/quickstartUUIDDOWNLOAD.txt
Press the Enter key to begin clean up
Deleting blob container...
Deleting the local source and downloaded files...
Done
Bevor Sie mit dem Bereinigungsprozess beginnen, überprüfen Sie den Datenordner auf die beiden Dateien. Sie können sie vergleichen und beobachten, dass sie identisch sind.
Optional können Sie das Beispiel im nativen Modus ausführen. Dazu müssen Sie GraalVM installiert haben oder ein Generatorimage verwenden, um die systemeigene ausführbare Datei zu erstellen. Weitere Informationen finden Sie unter Erstellen einer nativen ausführbaren Datei. Diese Schnellstartanleitung verwendet Docker als Containerlaufzeit, um eine systemeigene ausführbare Linux-Datei zu erstellen. Wenn Sie Docker nicht installiert haben, können Sie es von der Docker-Website herunterladen.
Führen Sie den folgenden Befehl aus, um die systemeigene ausführbare Datei in einer Linux-Umgebung zu erstellen und auszuführen:
mvn package -Dnative -Dquarkus.native.container-build
./target/storage-blob-1.0.0-SNAPSHOT-runner
Verstehen des Beispielcodes
Als Nächstes werden Sie durch den Beispielcode geführt, um zu verstehen, wie es funktioniert.
Einfügen eines Clientobjekts mit autorisiertem Zugriff
Die Arbeit mit einer beliebigen Azure-Ressource mit dem SDK beginnt mit dem Erstellen eines Clientobjekts. Die Quarkus-Erweiterung für Azure Blob Storage fügt automatisch ein Clientobjekt mit autorisiertem Zugriff mithilfe von DefaultAzureCredential ein.
Um ein Clientobjekt erfolgreich einzufügen, müssen Sie zuerst die Erweiterungen quarkus-arc und quarkus-azure-storage-blob ihrer pom.xml Datei als Abhängigkeiten hinzufügen:
<properties>
<quarkus.platform.version>3.17.7</quarkus.platform.version>
<quarkus.azure.services.version>1.1.1</quarkus.azure.services.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus.platform</groupId>
<artifactId>quarkus-bom</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.quarkiverse.azureservices</groupId>
<artifactId>quarkus-azure-services-bom</artifactId>
<version>${quarkus.azure.services.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
</dependency>
<dependency>
<groupId>io.quarkiverse.azureservices</groupId>
<artifactId>quarkus-azure-storage-blob</artifactId>
</dependency>
</dependencies>
Die quarkus-arc Erweiterung ist erforderlich, um die @Inject Anmerkung zum Einfügen des Clientobjekts in Den Anwendungscode zu verwenden. Die quarkus-bom Und quarkus-azure-services-bom Abhängigkeiten werden verwendet, um die Versionen der Quarkus-Plattform und die Erweiterung Von Quarkus für Azure-Dienste zu verwalten.
Als Nächstes können Sie das Clientobjekt mithilfe der @Inject Anmerkung in Ihren Anwendungscode einfügen:
@Inject
BlobServiceClient blobServiceClient;
Das ist alles, was Sie tun müssen, um ein Client-Objekt mit der Quarkus-Erweiterung für Azure Blob Storage zu erhalten. Um sicherzustellen, dass das Clientobjekt zur Laufzeit für den Zugriff auf Ihr Speicherkonto autorisiert ist, müssen Sie die Schritte im vorherigen Abschnitt "Authentifizieren bei Azure" ausführen und den Zugriff auf BLOB-Daten autorisieren , bevor Sie die Anwendung ausführen.
Verwalten von Blobs und Containern
Das folgende Codebeispiel zeigt, wie Sie einen Container erstellen, ein Blob hochladen, Blobs in einem Container auflisten und ein Blob herunterladen.
Hinweis
Das Schreiben in das lokale Dateisystem gilt als schlechte Methode in cloudeigenen Anwendungen. Das Beispiel verwendet jedoch das lokale Dateisystem, um die Verwendung von BLOB-Speicher auf eine Weise zu veranschaulichen, die dem Benutzer leicht zu überprüfen ist. Wenn Sie eine Anwendung in die Produktion aufnehmen, überprüfen Sie Ihre Speicheroptionen, und wählen Sie die beste Option für Ihre Anforderungen aus. Weitere Informationen finden Sie unter Überprüfen der Speicheroptionen.
// Create a unique name for the container
String containerName = "quickstartblobs" + java.util.UUID.randomUUID();
// Create the container and return a container client object
BlobContainerClient blobContainerClient = blobServiceClient.createBlobContainer(containerName);
// Create the ./data/ directory and a file for uploading and downloading
String localPath = "./data/";
new File(localPath).mkdirs();
String fileName = "quickstart" + java.util.UUID.randomUUID() + ".txt";
// Get a reference to a blob
BlobClient blobClient = blobContainerClient.getBlobClient(fileName);
// Write text to the file
FileWriter writer = null;
try
{
writer = new FileWriter(localPath + fileName, true);
writer.write("Hello, World!");
writer.close();
}
catch (IOException ex)
{
System.out.println(ex.getMessage());
}
System.out.println("\nUploading to Blob storage as blob:\n\t" + blobClient.getBlobUrl());
// Upload the blob
blobClient.uploadFromFile(localPath + fileName);
System.out.println("\nListing blobs...");
// List the blob(s) in the container.
for (BlobItem blobItem : blobContainerClient.listBlobs()) {
System.out.println("\t" + blobItem.getName());
}
// Download the blob to a local file
// Append the string "DOWNLOAD" before the .txt extension for comparison purposes
String downloadFileName = fileName.replace(".txt", "DOWNLOAD.txt");
System.out.println("\nDownloading blob to\n\t " + localPath + downloadFileName);
blobClient.downloadToFile(localPath + downloadFileName);
File downloadedFile = new File(localPath + downloadFileName);
File localFile = new File(localPath + fileName);
// Clean up resources
System.out.println("\nPress the Enter key to begin clean up");
System.console().readLine();
System.out.println("Deleting blob container...");
blobContainerClient.delete();
System.out.println("Deleting the local source and downloaded files...");
localFile.delete();
downloadedFile.delete();
System.out.println("Done");
Diese Vorgänge ähneln den in der Schnellstartanleitung beschriebenen Vorgängen: Azure Blob Storage-Clientbibliothek für Java SE. Ausführlichere Codeerklärungen finden Sie in den folgenden Abschnitten in dieser Schnellstartanleitung:
- Container erstellen
- Hochladen von Blobs in einen Container
- Blobs in einem Container auflisten
- Blobs herunterladen
- Löschen eines Containers
Aufräumen
Sie können die Links im Abschnitt "Nächste Schritte" auswählen, um die Quarkus-Anwendung in Azure bereitzustellen. Sie können das Speicherkonto auch bereinigen, indem Sie die Ressourcengruppe löschen. Weitere Informationen finden Sie unter Ressourcengruppe und Ressourcenlöschung in Azure Resource Manager.