Entwickeln für Azure Files mit C++

Tipp

Testen des Microsoft Azure Storage-Explorers

Beim Microsoft Azure Storage-Explorer handelt es sich um eine kostenlose eigenständige App von Microsoft, über die Sie ganz einfach visuell mit Azure Storage-Daten arbeiten können – unter Windows, MacOS und Linux.

Gilt für:

Dateifreigabetyp SMB NFS
Standard-Dateifreigaben (GPv2), LRS/ZRS Ja Nein
Standard-Dateifreigaben (GPv2), GRS/GZRS Ja Nein
Premium-Dateifreigaben (FileStorage), LRS/ZRS Ja Nein

Informationen zu diesem Tutorial

In diesem Tutorial erfahren Sie, wie Sie grundlegende Vorgänge in Azure Files mit C++ durchführen. Wenn Sie noch nicht mit Azure Files vertraut sind, helfen die in den folgenden Abschnitten erläuterten Konzepte, die Beispiele besser zu verstehen. Einige der behandelten Beispiele sind:

  • Erstellen und Löschen von Azure-Dateifreigaben
  • Erstellen und Löschen von Verzeichnissen
  • Hochladen, Herunterladen und Löschen einer Datei
  • Festlegen und Auflisten der Metadaten für eine Datei

Hinweis

Da der Zugriff auf Azure Files über SMB möglich ist, können Sie einfache Anwendungen schreiben, die über die standardmäßigen E/A-Klassen und -Funktionen von C++ auf die Azure-Dateifreigabe zugreifen. In diesem Artikel erfahren Sie, wie Sie Anwendungen schreiben, die das Azure Storage C++ SDK verwenden, das über die Datei-REST-API mit Azure Files kommuniziert.

Voraussetzungen

Einrichten

In diesem Abschnitt wird beschrieben, wie ein Projekt zur Verwendung mit der Azure Blob Storage-Clientbibliothek v12 für C++ vorbereitet wird.

Installieren der Pakete

Mit dem Befehl vcpkg install werden das Azure Storage Blobs SDK für C++ und die erforderlichen Abhängigkeiten installiert:

vcpkg.exe install azure-storage-files-shares-cpp:x64-windows

Besuchen Sie GitHub, um weitere Informationen zum Abrufen und Erstellen des Azure SDK für C++ zu erhalten.

Erstellen des Projekts

Erstellen Sie in Visual Studio eine neue C++-Konsolenanwendung für Windows mit dem Namen FilesShareQuickstartV12.

Visual Studio-Dialogfeld zum Konfigurieren einer neuen C++-Windows-Konsolen-App

Kopieren Ihrer Anmeldeinformationen aus dem Azure-Portal

Wenn die Beispielanwendung eine Anforderung an Azure Storage sendet, muss diese autorisiert werden. Fügen Sie zum Autorisieren einer Anforderung die Anmeldeinformationen für Ihr Speicherkonto in Form einer Verbindungszeichenfolge hinzu. Führen Sie zum Anzeigen der Anmeldeinformationen Ihres Speicherkontos die folgenden Schritte aus:

  1. Melden Sie sich beim Azure-Portal an.

  2. Suchen Sie nach Ihrem Speicherkonto.

  3. Wählen Sie im Speicherkonto-Menübereich unter Sicherheit + Netzwerkbetrieb die Option Zugriffsschlüssel aus. Hier können Sie die Kontozugriffsschlüssel und die vollständige Verbindungszeichenfolge für jeden Schlüssel anzeigen.

    Screenshot, der zeigt, wo sich die Zugriffsschlüsseleinstellungen im Azure-Portal befinden.

  4. Wählen Sie im Bereich Zugriffsschlüssel die Option Schlüssel anzeigen aus.

  5. Suchen Sie im Abschnitt key1 nach dem Wert Verbindungszeichenfolge. Wählen Sie das Symbol In Zwischenablage kopieren zum Kopieren der Verbindungszeichenfolge aus. Im nächsten Abschnitt fügen Sie den Wert der Verbindungszeichenfolge in eine Umgebungsvariable ein.

    Screenshot: Kopieren einer Verbindungszeichenfolge aus dem Azure-Portal

Konfigurieren der Speicherverbindungszeichenfolge

Schreiben Sie die Verbindungszeichenfolge nach dem Kopieren in eine neue Umgebungsvariable auf dem lokalen Computer, auf dem die Anwendung ausgeführt wird. Öffnen Sie zum Festlegen der Umgebungsvariablen ein Konsolenfenster, und befolgen Sie die Anleitung für Ihr Betriebssystem. Ersetzen Sie <yourconnectionstring> durch Ihre Verbindungszeichenfolge.

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Sie müssen nach dem Hinzufügen der Umgebungsvariablen unter Windows eine neue Instanz des Befehlsfensters öffnen.

Neustarten von Programmen

Nachdem Sie die Umgebungsvariable hinzugefügt haben, starten Sie alle ausgeführten Programme neu, in denen die Umgebungsvariable gelesen werden muss. Starten Sie beispielsweise die Entwicklungsumgebung oder den Editor neu, bevor Sie fortfahren.

Codebeispiele

Mit diesen Beispielcodeausschnitten wird veranschaulicht, wie folgende Vorgänge mit der Azure Files Share-Clientbibliothek für C++ durchgeführt werden:

Hinzufügen von Includedateien

Über das Projektverzeichnis:

  1. Öffnen Sie in Visual Studio die Projektmappendatei FilesShareQuickstartV12.sln.
  2. Öffnen Sie in Visual Studio die Quelldatei FilesShareQuickstartV12.cpp.
  3. Entfernen Sie den Code in main, der automatisch generiert wurde.
  4. Fügen Sie #include-Anweisungen hinzu.
#include <iostream>
#include <stdlib.h>
#include <vector>

#include <azure/storage/files/shares.hpp>

Abrufen der Verbindungszeichenfolge

Der folgende Code ruft die Verbindungszeichenfolge für das Speicherkonto aus der Umgebungsvariablen ab, die unter Konfigurieren der Speicherverbindungszeichenfolge erstellt wurde.

Fügen Sie diesen Code in main() hinzu:

        // Retrieve the connection string for use with the application. The storage
        // connection string is stored in an environment variable on the machine
        // running the application called AZURE_STORAGE_CONNECTION_STRING.
        // Note that _MSC_VER is set when using MSVC compiler.
        static const char* AZURE_STORAGE_CONNECTION_STRING = "AZURE_STORAGE_CONNECTION_STRING";
#if !defined(_MSC_VER)
        const char* connectionString = std::getenv(AZURE_STORAGE_CONNECTION_STRING);
#else
        // Use getenv_s for MSVC
        size_t requiredSize;
        getenv_s(&requiredSize, NULL, NULL, AZURE_STORAGE_CONNECTION_STRING);
        if (requiredSize == 0) {
            throw std::runtime_error("missing connection string from env.");
        }
        std::vector<char> value(requiredSize);
        getenv_s(&requiredSize, value.data(), value.size(), AZURE_STORAGE_CONNECTION_STRING);
        std::string connectionStringStr = std::string(value.begin(), value.end());
        const char* connectionString = connectionStringStr.c_str();
#endif

Erstellen einer Dateifreigabe

Erstellen Sie eine Instanz der Klasse ShareClient, indem Sie die Funktion CreateFromConnectionString aufrufen. Rufen Sie anschließend CreateIfNotExists auf, um die tatsächliche Dateifreigabe in Ihrem Speicherkonto zu erstellen.

Fügen Sie am Ende von main() den folgenden Code hinzu:

using namespace Azure::Storage::Files::Shares;

std::string shareName = "sample-share";

// Initialize a new instance of ShareClient
auto shareClient = ShareClient::CreateFromConnectionString(connectionString, shareName);

// Create the files share. This will do nothing if the files share already exists.
std::cout << "Creating files share: " << shareName << std::endl;
shareClient.CreateIfNotExists();

Hochladen von Dateien in eine Dateifreigabe

Der folgende Codeausschnitt führt folgende Aktionen durch:

  1. Deklarieren einer Zeichenfolge, die „Hello Azure!“ enthält
  2. Abrufen eines Verweises auf ein ShareFileClient-Objekt, indem der Stamm ShareDirectoryClient abgerufen wird und dann GetFileClient für die Dateifreigabe aus dem Abschnitt Erstellen einer Dateifreigabe aufgerufen wird
  3. Hochladen der Zeichenfolge in die Datei durch Aufrufen der Funktion UploadFrom. Mit dieser Funktion wird die Datei erstellt, falls sie nicht bereits vorhanden ist, oder aktualisiert, falls sie bereits vorhanden ist.

Fügen Sie am Ende von main() den folgenden Code hinzu:

std::string fileName = "sample-file";
uint8_t fileContent[] = "Hello Azure!";

// Create the ShareFileClient
ShareFileClient fileClient = shareClient.GetRootDirectoryClient().GetFileClient(fileName);

// Upload the file
std::cout << "Uploading file: " << fileName << std::endl;
fileClient.UploadFrom(fileContent, sizeof(fileContent));

Festlegen der Metadaten einer Datei

Legen Sie die Metadateneigenschaften für eine Datei fest, indem Sie die Funktion ShareFileClient.SetMetadata aufrufen.

Fügen Sie am Ende von main() den folgenden Code hinzu:

Azure::Storage::Metadata fileMetadata = { {"key1", "value1"}, {"key2", "value2"} };
fileClient.SetMetadata(fileMetadata);

Auflisten der Metadaten einer Datei

Rufen Sie die Metadateneigenschaften für eine Datei ab, indem Sie die Funktion ShareFileClient.GetProperties aufrufen. Die Metadaten befinden sich unter dem Metadata-Feld des zurückgegebenen Value. Die Metadaten sind ein Schlüssel-Wert-Paar, ähnlich wie im Beispiel unter Festlegen der Metadaten einer Datei.

// Retrieve the file properties
auto properties = fileClient.GetProperties().Value;
std::cout << "Listing blob metadata..." << std::endl;
for (auto metadata : properties.Metadata)
{
    std::cout << metadata.first << ":" << metadata.second << std::endl;
}

Herunterladen von Dateien

Nachdem Sie die Eigenschaften der Datei unter Auflisten der Metadaten einer Datei abgerufen haben, ein neues std::vector<uint8_t>-Objekt, indem Sie die Eigenschaften der hochgeladenen Datei verwenden. Laden Sie die zuvor erstellte Datei in das neue std::vector<uint8_t>-Objekt herunter, indem Sie die Funktion DownloadTo in der ShareFileClient-Basisklasse aufrufen. Zeigen Sie abschließend die heruntergeladenen Dateidaten an.

Fügen Sie am Ende von main() den folgenden Code hinzu:

std::vector<uint8_t> fileDownloaded(properties.FileSize);
fileClient.DownloadTo(fileDownloaded.data(), fileDownloaded.size());

std::cout << "Downloaded file contents: " << std::string(fileDownloaded.begin(), fileDownloaded.end()) << std::endl;

Löschen von Dateien

Mit dem folgenden Code wird das Blob durch Aufrufen der Funktion ShareFileClient.Delete aus der Azure Storage-Dateifreigabe gelöscht.

std::cout << "Deleting file: " << fileName << std::endl;
fileClient.DeleteIfExists();

Löschen einer Dateifreigabe

Mit dem folgenden Code werden die von der App erstellten Ressourcen bereinigt, indem die gesamte Dateifreigabe mithilfe von ShareClient.Delete gelöscht wird.

Fügen Sie am Ende von main() den folgenden Code hinzu:

std::cout << "Deleting files share: " << shareName << std::endl;
shareClient.DeleteIfExists();

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, und die Datei wird heruntergeladen und der Dateiinhalt angezeigt. Schließlich löscht die App das Blob und den Container.

Die Ausgabe der App sieht etwa wie das folgende Beispiel aus:

Azure Files Shares storage v12 - C++ quickstart sample
Creating files share: sample-share
Uploading file: sample-file
Listing file metadata...
key1:value1
key2:value2
Downloaded file contents: Hello Azure!
Deleting file: sample-file
Deleting files share: sample-share

Nächste Schritte

In dieser Schnellstartanleitung wurde beschrieben, wie Sie Dateien per C++ hochladen, herunterladen und auflisten. Außerdem haben Sie erfahren, wie Sie eine Azure Storage-Dateifreigabe erstellen und löschen.

Ein C++-Blob Storage-Beispiel finden Sie hier: