Partager via


Démarrage rapide : Bibliothèque cliente de stockage Blob Azure pour C++

Commencez avec la bibliothèque cliente Azure Blob Storage pour C++. Azure Blob Storage est la solution de stockage d’objets de Microsoft pour le cloud. Suivez ces étapes pour installer le package et essayer un exemple de code pour les tâches de base.

| Documentation de référence sur l’API | Code source de la bibliothèque | Exemples |

Prerequisites

Configuration

Cette section vous guide tout au long de la préparation d’un projet pour travailler avec la bibliothèque cliente Stockage Blob Azure pour C++. Le moyen le plus simple d’acquérir le Kit de développement logiciel (SDK) Azure pour C++ consiste à utiliser le gestionnaire de vcpkg package.

Installer les packages

Utilisez la vcpkg install commande pour installer la bibliothèque Stockage Blob Azure pour C++ et les dépendances nécessaires :

vcpkg.exe install azure-storage-blobs-cpp

La bibliothèque Azure Identity est nécessaire pour les connexions sans mot de passe aux services Azure :

vcpkg.exe install azure-identity-cpp

Pour plus d’informations sur la configuration du projet et l’utilisation du Kit de développement logiciel (SDK) Azure pour C++, consultez le fichier lisez-moi du Kit de développement logiciel (SDK) Azure pour C++.

Créer le projet

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

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

Modèle d'objet

Stockage Blob Azure est optimisé pour stocker des quantités massives de données non structurées. Les données non structurées sont des données qui ne respectent pas un modèle ou une définition de données particulier, telles que des données texte ou binaires. Le Stockage Blob offre trois types de ressources :

  • Le compte de stockage
  • Conteneur dans le compte de stockage
  • Blob dans le conteneur

Le diagramme suivant montre la relation entre ces ressources.

Diagramme de l’architecture de Stockage Blob

Utilisez ces classes C++ pour interagir avec ces ressources :

  • BlobServiceClient : La classe BlobServiceClient permet la manipulation des ressources Azure Storage et des conteneurs d’objets blob.
  • BlobContainerClient : la BlobContainerClient classe vous permet de manipuler des conteneurs stockage Azure et leurs objets blob.
  • BlobClient : La BlobClient classe vous permet de manipuler des objets blob stockage Azure. Il s’agit de la classe de base pour toutes les classes spécialisées de blob.
  • BlockBlobClient : La BlockBlobClient classe vous permet de manipuler des objets blob de blocs stockage Azure.

Exemples de code

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

Ajouter des fichiers include

À partir du répertoire de projet :

  1. Ouvrir le fichier de solution BlobQuickstart.sln dans Visual Studio
  2. Dans Visual Studio, ouvrez le fichier source BlobQuickstart.cpp
  3. Supprimer tout code à l’intérieur main qui a été généré automatiquement
  4. Ajouter les déclarations #include et using namespace
#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;

S’authentifier auprès d’Azure et autoriser l’accès aux données blob

Les demandes d’application adressées au Stockage Blob Azure doivent être autorisées. L’utilisation de la DefaultAzureCredential classe fournie par la bibliothèque de client Azure Identity est l’approche recommandée pour implémenter des connexions sans mot de passe aux services Azure dans votre code, notamment le Stockage Blob.

Vous pouvez également autoriser les demandes adressées au Stockage Blob Azure à l’aide de la clé d’accès au compte. Toutefois, cette approche doit être utilisée avec précaution. Les développeurs doivent être attentifs à ne jamais exposer la clé d’accès dans un emplacement non sécurisé. Toute personne disposant de la clé d’accès est en mesure d’autoriser les demandes sur le compte de stockage et a accès efficacement à toutes les données. DefaultAzureCredential offre des avantages de gestion et de sécurité améliorés sur la clé de compte pour autoriser l’authentification sans mot de passe. Les deux options sont illustrées dans l’exemple suivant.

La bibliothèque d’identités Azure fournit la prise en charge de l’authentification par jeton Microsoft Entra dans le Kit de développement logiciel (SDK) Azure. Il fournit un ensemble d’implémentations TokenCredential qui peuvent être utilisées pour construire des clients du Kit de développement logiciel (SDK) Azure qui prennent en charge l’authentification par jeton Microsoft Entra. DefaultAzureCredential prend en charge plusieurs méthodes d’authentification et détermine quelle méthode doit être utilisée au moment de l’exécution.

Attribuer des rôles à votre compte d’utilisateur Microsoft Entra

Lors du développement localement, assurez-vous que le compte d’utilisateur qui accède aux données d’objet blob dispose des autorisations appropriées. Vous aurez besoin de Storage Blob Data Contributor pour lire et écrire des données blob. Pour vous attribuer ce rôle, vous aurez besoin du rôle Administrateur de l’accès utilisateur ou d’un autre rôle qui inclut l’action Microsoft.Authorization/roleAssignments/write. Vous pouvez attribuer des rôles RBAC Azure à un utilisateur en utilisant le Portail Azure, Azure CLI ou Azure PowerShell. Pour plus d’informations sur le rôle Contributeur aux données Blob de stockage, consultez Contributeur aux données Blob de stockage. Pour plus d’informations sur les étendues disponibles pour les attributions de rôles, consultez Comprendre l’étendue du RBAC Azure.

Dans ce scénario, vous allez attribuer des autorisations à votre compte d’utilisateur, délimité au compte de stockage, pour suivre le principe du privilège minimum. Cette pratique offre aux utilisateurs uniquement les autorisations minimales nécessaires et crée des environnements de production plus sécurisés.

L’exemple suivant affecte le rôle Contributeur aux données d'objets blob de stockage à votre compte d’utilisateur, qui fournit à la fois un accès en lecture et en écriture aux données d'objets blob dans votre compte de stockage.

Important

Dans la plupart des cas, la propagation de l’attribution de rôle dans Azure peut prendre une ou deux minutes, mais dans de rares cas, cela peut prendre jusqu’à huit minutes. Si vous recevez des erreurs d’authentification lorsque vous exécutez votre code pour la première fois, patientez quelques instants et réessayez.

  1. Dans le Portail Azure, recherchez votre compte de stockage à l’aide de la barre de recherche principale ou de la navigation gauche.

  2. Dans la page vue d’ensemble du compte de stockage, sélectionnez Contrôle d’accès (IAM) dans le menu de gauche.

  3. Dans la page Contrôle d’accès (IAM), sélectionnez l’onglet Attributions de rôle.

  4. Sélectionnez + Ajouter dans le menu supérieur, puis ajoutez l’attribution de rôle dans le menu déroulant résultant.

    Capture d’écran montrant comment attribuer un rôle.

  5. Utilisez la zone de recherche pour filtrer les résultats selon le rôle souhaité. Pour cet exemple, recherchez Contributeur aux données Blob du stockage, sélectionnez le résultat correspondant, puis choisissez Suivant.

  6. Sous Attribuer l’accès à, sélectionnez Utilisateur, groupe ou principal de service, puis sélectionnez + Sélectionner des membres.

  7. Dans la boîte de dialogue, recherchez votre nom d’utilisateur Microsoft Entra (généralement votre adresse e-mail user@domain), puis choisissez Sélectionner en bas de la boîte de dialogue.

  8. Sélectionnez Vérifier + attribuer pour accéder à la page finale, puis sélectionnez à nouveau Vérifier + attribuer pour terminer le processus.

Connectez-vous et connectez votre code d’application à Azure à l’aide de DefaultAzureCredential

Vous pouvez autoriser l’accès aux données dans votre compte de stockage en procédant comme suit :

  1. Vérifiez que vous êtes authentifié avec le même compte Microsoft Entra auquel vous avez affecté le rôle sur votre compte de stockage. Vous pouvez vous authentifier via Azure CLI. Connectez-vous à Azure via Azure CLI à l’aide de la commande suivante :

    az login
    
  2. Pour utiliser DefaultAzureCredential, vérifiez que le package azure-identity-cpp est installé et que les éléments suivants #include sont ajoutés :

    #include <azure/identity/default_azure_credential.hpp>
    
  3. Ajoutez ce code à la fin de main(). Lorsque le code s’exécute sur votre station de travail locale, DefaultAzureCredential utilise les informations d’identification du développeur pour Azure CLI pour s’authentifier auprès d’Azure.

    // 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);
    
  4. Veillez à mettre à jour le nom du compte de stockage dans l’URI de votre BlobServiceClient objet. Le nom du compte de stockage se trouve sur la page vue d’ensemble du portail Azure.

    Capture d’écran montrant comment rechercher le nom du compte de stockage.

    Note

    Lorsque vous utilisez le Kit de développement logiciel (SDK) C++ dans un environnement de production, il est recommandé d’activer uniquement les informations d’identification que vous connaissez pour votre application. Au lieu d’utiliser DefaultAzureCredential, vous devriez authentifier en utilisant un type d'informations d'identification spécifique ou en utilisant ChainedTokenCredential avec les informations d'identification prises en charge.

Créer un conteneur

Choisissez un nom pour le nouveau conteneur. Créez ensuite une instance du BlobContainerClient conteneur et créez-le.

Important

Les noms de conteneur doivent être en minuscules. Pour plus d’informations sur l’affectation de noms de conteneurs et d’objets blob, consultez Affectation de noms et référencement de conteneurs, d’objets blob et de métadonnées.

Ajoutez ce code à la fin de 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();

Charger des objets blob sur un conteneur

L’extrait de code suivant :

  1. Déclare une chaîne contenant « Hello Azure! ».
  2. Obtient une référence à un objet BlockBlobClient en appelant GetBlockBlobClient sur le conteneur à partir de la section Créer un conteneur .
  3. Transfère la chaîne vers le blob en utilisant la fonction UploadFrom. Cette fonction crée l’objet blob s’il n’existe pas déjà ou le met à jour s’il le fait.

Ajoutez ce code à la fin de 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));

Créer la liste des objets blob d’un conteneur

Répertoriez les objets blob dans le conteneur en appelant la fonction ListBlobs . Un seul objet blob a été ajouté au conteneur. L’opération retourne donc uniquement cet objet blob.

Ajoutez ce code à la fin de main():

std::cout << "Listing blobs..." << std::endl;
auto listBlobsResponse = containerClient.ListBlobs();
for (auto blobItem : listBlobsResponse.Blobs)
{
    std::cout << "Blob name: " << blobItem.Name << std::endl;
}

Télécharger des objets blob

Obtenez les propriétés de l'objet blob téléchargé. Ensuite, déclarez et redimensionnez un nouvel std::vector<uint8_t> objet à l’aide des propriétés de l’objet blob chargé. Téléchargez l’objet blob créé précédemment dans le nouvel std::vector<uint8_t> objet en appelant la fonction DownloadTo dans la classe de base BlobClient . Enfin, affichez les données de l’objet blob téléchargé.

Ajoutez ce code à la fin de 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;

Supprimer un Blob

Le code suivant supprime l’objet blob du conteneur Stockage Blob Azure en appelant la fonction BlobClient.Delete .

std::cout << "Deleting blob: " << blobName << std::endl;
blobClient.Delete();

Supprimer un conteneur

Le code suivant nettoie les ressources créées par l’application en supprimant l’intégralité du conteneur à l’aide de BlobContainerClient.Supprimez.

Ajoutez ce code à la fin de main():

std::cout << "Deleting container: " << containerName << std::endl;
containerClient.Delete();

Exécuter le code

Cette application crée un conteneur et charge un fichier texte dans stockage Blob Azure. L’exemple répertorie ensuite les objets blob dans le 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 est similaire à l’exemple suivant :

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

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez appris à charger, télécharger et répertorier des objets blob à l’aide de C++. Vous avez également appris à créer et supprimer un conteneur Stockage Blob Azure.

Pour afficher un exemple de stockage Blob C++, passez à :