Quickstart: Azure Blob Storage-clientbibliotheek v12 voor C++

Aan de slag met de Azure Blob Storage-clientbibliotheek v12 voor C++. Azure Blob Storage is de oplossing voor opslag van objecten in de cloud van Microsoft. Volg de stappen om het pakket te installeren en voorbeeldcode voor basistaken uit te proberen. Blob Storage is geoptimaliseerd voor het opslaan van grote hoeveelheden ongestructureerde gegevens.

Gebruik de Azure Blob Storage-clientbibliotheek v12 voor C++ voor het volgende:

  • Een container maken
  • Een blob uploaden naar Azure Storage
  • Alle blobs in een container weergeven
  • De blob downloaden op uw lokale computer
  • Een container verwijderen

Resources:

Vereisten

Instellen

In dit gedeelte wordt uitgelegd hoe u een project voorbereidt voor gebruik met de Azure Blob Storage-clientbibliotheek v12 voor C++.

De pakketten installeren

Met vcpkg install de opdracht wordt de Azure Storage Blobs SDK voor C++ en de benodigde afhankelijkheden geïnstalleerd:

vcpkg.exe install azure-storage-blobs-cpp:x64-windows

Ga voor meer informatie naar GitHub om de Azure SDK voor C++te verkrijgen en te bouwen.

Het project maken

Maak in Visual Studio een nieuwe C++-consoletoepassing voor Windows met de naam BlobQuickstartV12.

Visual Studio dialog for configuring a new C++ Windows console app

Kopieer uw referenties van de Azure Portal

Wanneer met de voorbeeldtoepassing een aanvraag wordt ingediend bij Azure Storage, moet deze aanvraag worden geautoriseerd. Om een aanvraag te autoriseren voegt u de referenties van uw opslagaccount toe als een verbindingsreeks. Voer de volgende stappen uit om de referenties van uw opslagaccount weer te geven:

  1. Meld u aan bij Azure Portal.

  2. Zoek uw opslagaccount.

  3. Selecteer toegangssleutels in het menuvenster van het opslagaccount onder Beveiliging en netwerken. Hier kunt u de toegangssleutels voor het account en de volledige connection string voor elke sleutel bekijken.

    Screenshot that shows where the access key settings are in the Azure portal

  4. Selecteer In het deelvenster Toegangssleutelsde optie Sleutels weergeven.

  5. Zoek in de sectie key1 de waarde van de verbindingsreeks . Selecteer het pictogram Kopiëren naar klembord om de connection string te kopiëren. In de volgende sectie voegt u de connection string waarde toe aan een omgevingsvariabele.

    Screenshot showing how to copy a connection string from the Azure portal

De opslagverbindingsreeks configureren

Nadat u de connection string hebt gekopieerd, schrijft u deze naar een nieuwe omgevingsvariabele op de lokale computer waarop de toepassing wordt uitgevoerd. Als u de omgevingsvariabele wilt instellen, opent u een consolevenster en volgt u de aanwijzingen voor uw besturingssysteem. Vervang <yourconnectionstring> door de feitelijke verbindingsreeks.

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Nadat u de omgevingsvariabele in Windows hebt toegevoegd, moet u een nieuw exemplaar van het opdrachtvenster starten.

Programma's opnieuw opstarten

Nadat u de omgevingsvariabele hebt toegevoegd, start u actieve programma's die de omgevingsvariabele moeten lezen, opnieuw. Start bijvoorbeeld uw ontwikkelomgeving of editor opnieuw voordat u doorgaat.

Objectmodel

Azure Blob Storage is geoptimaliseerd voor het opslaan van grote hoeveelheden ongestructureerde gegevens. Ongestructureerde gegevens zijn gegevens die niet voldoen aan een bepaald gegevensmodel of bepaalde definitie, zoals tekst of binaire gegevens. Er zijn drie typen resources voor Blob Storage:

  • Het opslagaccount
  • Een container in het opslagaccount
  • Een blob in de container

Het volgende diagram geeft de relatie tussen deze resources weer.

Diagram of Blob Storage architecture

Gebruik deze C++-klassen om te communiceren met deze resources:

  • BlobServiceClient: Met de klasse BlobServiceClient kunt u Azure Storage-resources en blob-containers bewerken.
  • BlobContainerClient: Met de klasse BlobContainerClient kunt u Azure Storage-containers en de bijbehorende blobs bewerken.
  • BlobClient: Met de klasse BlobClient kunt u Azure Storage-blobs bewerken. Het is de basisklasse voor alle gespecialiseerde blob-klassen.
  • BlockBlobClient: Met de klasse BlockBlobClient kunt u Azure Storage-blok-blobs bewerken.

Codevoorbeelden

Deze voorbeeldcodefragmenten laten zien hoe u de volgende taken kunt uitvoeren met de Azure Blob Storage-clientbibliotheek voor C++:

Include-bestanden toevoegen

Ga als volgt te werk vanuit de projectmap:

  1. Open het BlobQuickstartV12.sln-oplossingenbestand in Visual Studio
  2. Open in Visual Studio het bronbestand BlobQuickstartV12.cpp
  3. Alle code in main verwijderen die automatisch is gegenereerd
  4. Voeg #include-instructies toe
#include <stdlib.h>
#include <iostream>
#include <azure/storage/blobs.hpp>

De verbindingsreeks ophalen

De onderstaande code haalt de verbindingstekenreeks voor uw opslagaccount op van de omgevingsvariabele die is gemaakt in De opslagverbindingsreeks configureren.

Voeg deze code toe in 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

Een container maken

Maak een exemplaar van de klasse BlobContainerClient door de functie CreateFromConnectionString aan te roepen. Roep vervolgens CreateIfNotExists aan om de werkelijke container in uw opslagaccount te maken.

Belangrijk

Containernamen moeten uit kleine letters bestaan. Zie Containers, blobs en metagegevens een naam geven en hiernaar verwijderen voor meer informatie over de naamgeving van containers en blobs.

Voeg deze code toe aan het einde van main():

using namespace Azure::Storage::Blobs;

std::string containerName = "myblobcontainer";

// Initialize a new instance of BlobContainerClient
BlobContainerClient containerClient
    = BlobContainerClient::CreateFromConnectionString(connectionString, containerName);

// Create the container. This will do nothing if the container already exists.
std::cout << "Creating container: " << containerName << std::endl;
containerClient.CreateIfNotExists();

Blobs uploaden naar een container

Het volgende codefragment:

  1. Declareert een tekenreeks die ‘Hello Azure!’ bevat.
  2. Hiermee wordt een verwijzing opgehaald naar een object BlockBlobClient door het aanroepen van GetBlockBlobClient op de container vanuit de sectie Een container maken.
  3. Hiermee wordt de tekenreeks geüpload naar de blob door de functie Upload From aan te roepen. Met deze functie wordt de blob gemaakt als deze nog niet bestaat, of wordt deze bijgewerkt als dat wel het geval is.

Voeg deze code toe aan het einde van 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));

Blobs in een container vermelden

Vermeld de blobs in de container door de functie ListBlobs aan te roepen. Er is slechts één blob aan de container toegevoegd, dus de bewerking retourneert alleen die blob.

Voeg deze code toe aan het einde van main():

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

Blobs downloaden

De eigenschappen van de geüploade blob ophalen. Vervolgens declareert en wijzigt u het formaat van een nieuw std::vector<uint8_t>-object met behulp van de eigenschappen van de geüploade blob. Download de eerder gemaakte blob naar het nieuwe std::vector<uint8_t> object door de functie DownloadTo aan te roepen in de basisklasse BlobClient . Ten slotte geeft u de gedownloade blob-gegevens weer.

Voeg deze code toe aan het einde van 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;

Een blob verwijderen

Met de volgende code wordt de blob uit de Azure Blob Storage-container verwijderd door de functie BlobClient.Delete aan te roepen.

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

Een container verwijderen

Met de volgende code worden de resources opgeschoond die de app heeft gemaakt door de hele container te verwijderen met behulp van BlobContainerClient. Verwijderen.

Voeg deze code toe aan het einde van main():

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

De code uitvoeren

Met deze app maakt u een container en uploadt u een tekstbestand naar Azure Blob Storage. Vervolgens wordt een lijst gemaakt van de blobs in de container, wordt het bestand gedownload en wordt de bestandsinhoud weergegeven. Ten slotte verwijdert de app de blob en de container.

De uitvoer van de app lijkt op die in het volgende voorbeeld:

Azure Blob Storage v12 - 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

Volgende stappen

In deze quickstart hebt u geleerd hoe u blobs kunt uploaden, downloaden en er een lijst van kunt maken met behulp van C++. U hebt ook geleerd hoe u een Azure Blob Storage-container maakt en verwijdert.

Als u een voorbeeld wilt zien van Blob Storage voor C++, ga dan naar: