Développer pour Azure Files avec C++

Conseil

Testez Microsoft Azure Storage Explorer

Microsoft Azure Storage Explorer est une application autonome et gratuite de Microsoft qui vous permet d’exploiter visuellement les données de Stockage Azure sur Windows, macOS et Linux.

S’applique à

Type de partage de fichiers SMB NFS
Partages de fichiers Standard (GPv2), LRS/ZRS Oui Non
Partages de fichiers Standard (GPv2), GRS/GZRS Oui Non
Partages de fichiers Premium (FileStorage), LRS/ZRS Oui Non

À propos de ce didacticiel

Ce tutoriel explique comment effectuer des opérations de base sur Azure Files en utilisant C++. Si vous ne connaissez pas Azure Files, l’étude des concepts abordés dans les sections suivantes vous sera utile pour comprendre les exemples. Voici quelques-uns des exemples traités :

  • Créer et supprimer des partages de fichiers Azure
  • Créer et supprimer des répertoires
  • Charger, télécharger et supprimer un fichier
  • Définir et répertorier les métadonnées d’un fichier

Notes

Comme Azure Files est accessible sur SMB, vous pouvez écrire des applications simples qui accèdent au partage de fichiers Azure à l’aide des fonctions et des classes d’E/S C++ standard. Cet article indique comment écrire des applications qui utilisent le SDK C++ Stockage Azure, lequel a recours à l’API REST Fichier pour communiquer avec Azure Files.

Prérequis

Configuration

Cette section vous guide tout au long de la préparation d’un projet pour utiliser la bibliothèque de client Stockage Blob Azure v12 pour C++.

Installer les packages

La commande vcpkg install installe le kit de développement logiciel (SDK) d’Azure Storage Blob pour C++ et les dépendances nécessaires :

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

Pour plus d’informations, visitez GitHub pour acquérir et créer le SDK Azure pour C++.

Créer le projet

Dans Visual Studio, créez une nouvelle application console C++ pour Windows appelée FilesShareQuickstartV12.

Boîte de dialogue Visual Studio pour la configuration d’une nouvelle application console Windows C++

Copier vos informations d’identification depuis le portail Azure

Lorsque l’exemple d’application effectue une requête auprès du stockage Azure, il doit être autorisé. Pour autoriser une demande, ajoutez les informations d’identification de votre compte de stockage à l’application sous la forme d’une chaîne de connexion. Pour afficher les informations d’identification de votre compte de stockage, effectuez les étapes suivantes :

  1. Connectez-vous au portail Azure.

  2. Recherchez votre compte de stockage.

  3. Dans le volet de menu du compte de stockage, sous Sécurité + réseau, sélectionnez Clés d’accès. Ici, vous pouvez afficher les clés d’accès du compte et la chaîne de connexion complète pour chaque clé.

    Capture d’écran montrant où se trouvent les paramètres de clé d’accès dans le portail Azure

  4. Dans le volet Clés d’accès, sélectionnez Afficher les clés.

  5. Dans la section clé1, recherchez la valeur Chaîne de connexion. Sélectionnez l’icône Copier dans le Presse-papiers pour copier la chaîne de connexion. Vous ajouterez la valeur de chaîne de connexion à une variable d’environnement dans la section suivante.

    Capture d’écran montrant comment copier une chaîne de connexion à partir du portail Azure

Configurer votre chaîne de connexion de stockage

Après avoir copié la chaîne de connexion, écrivez-la dans une variable d’environnement sur l’ordinateur local exécutant l’application. Pour définir la variable d’environnement, ouvrez une fenêtre de console et suivez les instructions pour votre système d’exploitation. Remplacez <yourconnectionstring> par votre chaîne de connexion.

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Après avoir ajouté la variable d’environnement dans Windows, vous devez démarrer une nouvelle instance de la fenêtre de commande.

Redémarrer des programmes

Après avoir ajouté la variable d’environnement, redémarrez tous les programmes en cours d’exécution qui devront la lire. Par exemple, redémarrez l’environnement ou l’éditeur de développement avant de continuer.

Exemples de code

Ces exemples d’extraits de code vous montrent comment effectuer les tâches suivantes avec la bibliothèque de partage de fichiers Stockage Azure pour C++ :

Ajouter des fichiers include

À partir du répertoire de projet :

  1. Ouvrez le fichier solution FilesShareQuickstartV12.sln dans Visual Studio.
  2. Dans Visual Studio, ouvrez le fichier source FilesShareQuickstartV12.cpp.
  3. Supprimez le code dans main qui a été généré automatiquement.
  4. Ajoutez des instructions #include.
#include <iostream>
#include <stdlib.h>
#include <vector>

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

Obtenir la chaîne de connexion

Le code ci-dessous récupère la chaîne de connexion pour votre compte de stockage dans la variable d’environnement créée dans Configurer votre chaîne de connexion de stockage.

Ajoutez ce code dans main() :

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

Créer un partage de fichiers

Créez une instance de la classe ShareClient en appelant la fonction CreateFromConnectionString. Ensuite, appelez CreateIfNotExists pour créer le partage de fichiers réel dans votre compte de stockage.

Ajoutez ce code à la fin de main() :

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();

Charger des fichiers dans un partage de fichiers

L’extrait de code suivant :

  1. Déclare une chaîne contenant « Hello Azure! ».
  2. Obtient une référence à un objet ShareFileClient en récupérant le ShareDirectoryClient racine, puis en appelant GetFileClient sur le partage de fichiers à partir de la section Créer un partage de fichiers.
  3. Charge la chaîne dans le fichier en appelant la fonction UploadFrom. Cette fonction crée le fichier s’il n’existe pas déjà ou le remplace s’il existe.

Ajoutez ce code à la fin de main() :

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));

Définir les métadonnées d’un fichier

Définissez les propriétés de métadonnées d’un fichier en appelant la fonction ShareFileClient.SetMetadata.

Ajoutez ce code à la fin de main() :

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

Répertorier les métadonnées d’un fichier

Obtenez les propriétés de métadonnées d’un fichier en appelant la fonction ShareFileClient.GetProperties. Les métadonnées se trouvent sous le champ Metadata du Value retourné. Les métadonnées sont une paire clé-valeur, similaire à l’exemple de définition des métadonnées d’un fichier.

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

Télécharger les fichiers

Après avoir récupéré les propriétés du fichier dans, Répertorier les métadonnées d’un fichier un nouvel objet std::vector<uint8_t> est créé à l’aide des propriétés du fichier téléchargé. Téléchargez le fichier créé précédemment dans le nouvel objet std::vector<uint8_t> en appelant la fonction DownloadTo dans la classe de base ShareFileClient. Enfin, affichez les données du fichier téléchargé.

Ajoutez ce code à la fin de main() :

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;

Supprimer un fichier

Le code suivant supprime l’objet blob du partage de fichiers Stockage Azure en appelant la fonction ShareFileClient.Delete.

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

Supprimer un partage de fichiers

Le code suivant nettoie les ressources que l’application a créées en supprimant l’intégralité du partage de fichiers à l’aide de ShareClient.Delete.

Ajoutez ce code à la fin de main() :

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

Exécuter le code

Cette application crée un conteneur et charge un fichier texte dans Stockage Blob Azure. L’exemple liste ensuite le ou les objets blob du conteneur, télécharge le fichier et affiche le contenu du fichier. Enfin, l’application supprime l’objet blob et le conteneur.

La sortie de l’application ressemble à l’exemple suivant :

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

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez découvert comment charger, télécharger et lister des fichiers en utilisant C++. Vous avez également découvert comment créer et supprimer un partage de fichiers Stockage Azure.

Pour voir un exemple d’application Stockage Blob C++, passez à :