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.
Erste Schritte mit der Azure Blob Storage-Clientbibliothek für C++. Azure Blob Storage ist die Objektspeicherlösung von Microsoft für die Cloud. Führen Sie die folgenden Schritte aus, um das Paket zu installieren und Beispielcode für grundlegende Aufgaben auszuprobieren.
| API-Referenzdokumentation | Quellcode | der BibliothekProben |
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Azure Storage-Konto – Erstellen eines Speicherkontos
- C++-Compiler
- CMake
- vcpkg – C- und C++-Paket-Manager
Einrichten
Dieser Abschnitt führt Sie durch die Vorbereitung eines Projekts für die Arbeit mit der Azure Blob Storage-Clientbibliothek für C++. Die einfachste Möglichkeit, das Azure SDK für C++ zu erwerben, besteht darin, den vcpkg Paket-Manager zu verwenden.
Installieren der Pakete
Verwenden Sie den vcpkg install Befehl, um die Azure Blob Storage-Bibliothek für C++ und die erforderlichen Abhängigkeiten zu installieren:
vcpkg.exe install azure-storage-blobs-cpp
Die Azure Identity-Bibliothek ist für kennwortlose Verbindungen mit Azure-Diensten erforderlich:
vcpkg.exe install azure-identity-cpp
Weitere Informationen zum Einrichten und Arbeiten mit dem Azure SDK für C++ finden Sie im Azure SDK für C++-Infodatei.
Erstelle das Projekt
Erstellen Sie in Visual Studio eine neue C++-Konsolenanwendung für Windows namens BlobQuickstart.
Objektmodell
Azure Blob Storage ist für die Speicherung massiver Mengen unstrukturierter Daten optimiert. Unstrukturierte Daten sind Daten, die nicht einem bestimmten Datenmodell oder einer bestimmten Definition entsprechen, z. B. Text oder Binärdaten. Blob Storage bietet drei Arten von Ressourcen:
- Das Speicherkonto
- Ein Container im Speicherkonto
- Ein Blob im Container
Das folgende Diagramm zeigt die Beziehung zwischen diesen Ressourcen.
Verwenden Sie diese C++-Klassen, um mit diesen Ressourcen zu interagieren:
-
BlobServiceClient: Mit der
BlobServiceClientKlasse können Sie Azure Storage-Ressourcen und Blobcontainer bearbeiten. -
BlobContainerClient: Mit der
BlobContainerClientKlasse können Sie Azure Storage-Container und deren Blobs bearbeiten. -
BlobClient: Mit der
BlobClientKlasse können Sie Azure Storage-Blobs bearbeiten. Sie ist die Basisklasse für alle spezialisierten blob-Klassen. -
BlockBlobClient: Mit der
BlockBlobClientKlasse können Sie Azure Storage-Block-Blobs bearbeiten.
Code-Beispiele
Diese Beispielcodeausschnitte zeigen Ihnen, wie Sie die folgenden Aufgaben mit der Azure Blob Storage-Clientbibliothek für C++ ausführen:
- Include-Dateien hinzufügen
- Authentifizieren bei Azure und Autorisieren des Zugriffs auf BLOB-Daten
- Container erstellen
- Hochladen von Blobs in einen Container
- Blobs in einem Container auflisten
- Blobs herunterladen
- Löschen eines Containers
Hinzufügen von Includedateien
Aus dem Projektverzeichnis:
- Öffnen der BlobQuickstart.sln Projektmappendatei in Visual Studio
- Öffnen Sie in Visual Studio die BlobQuickstart.cpp Quelldatei.
- Entfernen Sie jeglichen automatisch generierten Code innerhalb von
main - Hinzufügen von
#include- undusing namespace-Anweisungen
#include <iostream>
#include <azure/core.hpp>
#include <azure/identity/default_azure_credential.hpp>
#include <azure/storage/blobs.hpp>
using namespace Azure::Identity;
using namespace Azure::Storage::Blobs;
Authentifizieren bei Azure und Autorisieren des Zugriffs auf BLOB-Daten
Anwendungsanforderungen an Azure Blob Storage müssen autorisiert sein. Die Verwendung der DefaultAzureCredential von der Azure Identity-Clientbibliothek bereitgestellten Klasse ist der empfohlene Ansatz für die Implementierung kennwortloser Verbindungen mit Azure-Diensten in Ihrem Code, einschließlich Blob Storage.
Sie können Auch Anforderungen an Azure Blob Storage autorisieren, indem Sie den Kontozugriffsschlüssel verwenden. Dieser Ansatz sollte jedoch mit Vorsicht verwendet werden. Entwickler müssen fleißig sein, niemals den Zugriffsschlüssel an einem unsicheren Speicherort verfügbar zu machen. Jeder, der über den Zugriffsschlüssel verfügt, kann Anforderungen für das Speicherkonto autorisieren und hat somit Zugriff auf alle Daten.
DefaultAzureCredential bietet verbesserte Verwaltungs- und Sicherheitsvorteile gegenüber dem Kontoschlüssel, um die kennwortlose Authentifizierung zu ermöglichen. Beide Optionen werden im folgenden Beispiel veranschaulicht.
Die Azure Identity-Bibliothek bietet Unterstützung für die Microsoft Entra-Tokenauthentifizierung im gesamten Azure SDK. Es stellt eine Reihe von Implementierungen bereit, die zum Erstellen von TokenCredential Azure SDK-Clients verwendet werden können, die die Microsoft Entra-Tokenauthentifizierung unterstützen.
DefaultAzureCredential unterstützt mehrere Authentifizierungsmethoden und bestimmt, welche Methode zur Laufzeit verwendet werden soll.
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 mit 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. Sie können sich über Azure CLI authentifizieren. Melden Sie sich über die Azure CLI mit dem folgenden Befehl bei Azure an:
az loginStellen Sie für die Verwendung
DefaultAzureCredentialsicher, dass das Azure-identity-cpp-Paketinstalliert ist und Folgendes#includehinzugefügt wird:#include <azure/identity/default_azure_credential.hpp>Fügen Sie diesen Code am Ende von
main(). Wenn der Code auf Ihrer lokalen Arbeitsstation ausgeführt wird,DefaultAzureCredentialverwendet die Entwickleranmeldeinformationen für Azure CLI, um sich bei Azure zu authentifizieren.// Initialize an instance of DefaultAzureCredential auto defaultAzureCredential = std::make_shared<DefaultAzureCredential>(); auto accountURL = "https://<storage-account-name>.blob.core.windows.net"; BlobServiceClient blobServiceClient(accountURL, defaultAzureCredential);Achten Sie darauf, den Namen des Speicherkontos im URI Ihres
BlobServiceClientObjekts zu aktualisieren. Der Name des Speicherkontos finden Sie auf der Übersichtsseite des Azure-Portals.
Hinweis
Wenn Sie das C++-SDK in einer Produktionsumgebung verwenden, empfiehlt es sich, nur Anmeldeinformationen zu aktivieren, von denen Sie wissen, dass Ihre Anwendung verwendet wird. Statt
DefaultAzureCredentialzu verwenden, sollten Sie entweder einen bestimmten Anmeldeinformationstyp autorisieren oderChainedTokenCredentialmit den unterstützten Anmeldeinformationen verwenden.
Einen Container erstellen
Legen Sie einen Namen für den neuen Container fest. Erstellen Sie dann eine Instanz von BlobContainerClient und erstellen Sie den Container.
Von Bedeutung
Containernamen müssen Kleinbuchstaben sein. Weitere Informationen zum Benennen von Containern und Blobs finden Sie unter "Benennen und Verweisen auf Container", "Blobs" und "Metadaten".
Fügen Sie diesen Code am Ende von main():
std::string containerName = "myblobcontainer";
auto containerClient = blobServiceClient.GetBlobContainerClient("myblobcontainer");
// Create the container if it does not exist
std::cout << "Creating container: " << containerName << std::endl;
containerClient.CreateIfNotExists();
Hochladen von Blobs in einen Container
Der folgende Codeausschnitt:
- Deklariert eine Zeichenfolge mit dem Inhalt "Hello Azure!"
- Ruft einen Verweis auf ein BlockBlobClient-Objekt durch Aufrufen von GetBlockBlobClient für den Container aus dem Abschnitt Einen Container erstellen ab.
- Lädt die Zeichenfolge in das Blob hoch, indem die UploadFrom-Funktion aufgerufen wird. Diese Funktion erstellt das Blob, wenn es noch nicht vorhanden ist, oder aktualisiert es, wenn dies der Fall ist.
Fügen Sie diesen Code am Ende von main():
std::string blobName = "blob.txt";
uint8_t blobContent[] = "Hello Azure!";
// Create the block blob client
BlockBlobClient blobClient = containerClient.GetBlockBlobClient(blobName);
// Upload the blob
std::cout << "Uploading blob: " << blobName << std::endl;
blobClient.UploadFrom(blobContent, sizeof(blobContent));
Auflisten der Blobs in einem Container
Auflisten der Blobs im Container durch Aufrufen der ListBlobs-Funktion . Dem Container wurde nur ein Blob hinzugefügt, sodass der Vorgang nur dieses Blob zurückgibt.
Fügen Sie diesen Code am Ende von main():
std::cout << "Listing blobs..." << std::endl;
auto listBlobsResponse = containerClient.ListBlobs();
for (auto blobItem : listBlobsResponse.Blobs)
{
std::cout << "Blob name: " << blobItem.Name << std::endl;
}
Herunterladen von Blobs
Dient zum Abrufen der Eigenschaften des hochgeladenen Blobs. Deklarieren und ändern Sie dann die Größe eines neuen std::vector<uint8_t> Objekts mithilfe der Eigenschaften des hochgeladenen Blobs. Laden Sie das zuvor erstellte Blob in das neue std::vector<uint8_t> Objekt herunter, indem Sie die DownloadTo-Funktion in der BlobClient-Basisklasse aufrufen. Zeigen Sie schließlich die heruntergeladenen BLOB-Daten an.
Fügen Sie diesen Code am Ende von main():
auto properties = blobClient.GetProperties().Value;
std::vector<uint8_t> downloadedBlob(properties.BlobSize);
blobClient.DownloadTo(downloadedBlob.data(), downloadedBlob.size());
std::cout << "Downloaded blob contents: " << std::string(downloadedBlob.begin(), downloadedBlob.end()) << std::endl;
Löschen eines Blobs
Der folgende Code löscht den Blob aus dem Azure Blob Storage-Container, indem die BlobClient.Delete-Funktion aufgerufen wird.
std::cout << "Deleting blob: " << blobName << std::endl;
blobClient.Delete();
Container löschen
Der folgende Code bereinigt die Ressourcen, die die App durch Löschen des gesamten Containers mithilfe von BlobContainerClient erstellt hat.Löschen.
Fügen Sie diesen Code am Ende von main():
std::cout << "Deleting container: " << containerName << std::endl;
containerClient.Delete();
Ausführen des Codes
Diese App erstellt einen Container und lädt eine Textdatei in Azure Blob Storage hoch. Im Beispiel werden dann die Blobs im Container aufgelistet, die Datei heruntergeladen und der Dateiinhalt angezeigt. Schließlich löscht die App das Blob und den Container.
Die Ausgabe der App ähnelt dem folgenden Beispiel:
Azure Blob Storage - C++ quickstart sample
Creating container: myblobcontainer
Uploading blob: blob.txt
Listing blobs...
Blob name: blob.txt
Downloaded blob contents: Hello Azure!
Deleting blob: blob.txt
Deleting container: myblobcontainer
Nächste Schritte
In dieser Schnellstartanleitung haben Sie erfahren, wie Sie Blobs mit C++ hochladen, herunterladen und auflisten. Außerdem haben Sie erfahren, wie Sie einen Azure Blob Storage-Container erstellen und löschen.
Um ein C++-Blob Storage-Beispiel anzuzeigen, fahren Sie mit folgendem Vorgang fort: