Utveckla för Azure Files med C++

Tips

Prova Microsoft Azure Lagringsutforskaren

Microsoft Azure Storage Explorer är en kostnadsfri, fristående app från Microsoft som gör det möjligt att arbeta visuellt med Azure Storage-data i Windows, macOS och Linux.

Gäller för

Typ av filresurs SMB NFS
Standardfilresurser (GPv2), LRS/ZRS Ja Inga
Standardfilresurser (GPv2), GRS/GZRS Ja Inga
Premiumfilresurser (FileStorage), LRS/ZRS Ja No

Om den här självstudiekursen

I den här självstudien får du lära dig hur du utför grundläggande åtgärder på Azure Files med hjälp av C++. Om du inte har Azure Files är det bra att gå igenom begreppen i avsnitten som följer för att förstå exemplen. Några av exemplen som omfattas är:

  • Skapa och ta bort Azure-filresurser
  • Skapa och ta bort kataloger
  • Ladda upp, ladda ned och ta bort en fil
  • Ange och lista metadata för en fil

Anteckning

Eftersom Azure Files kan nås via SMB är det möjligt att skriva enkla program som har åtkomst till Azure-filresursen med hjälp av C++ standardklasser och funktioner för I/O. Den här artikeln beskriver hur du skriver program som använder Azure Storage C++ SDK, som använder REST API för fil för att prata med Azure Files.

Förutsättningar

Inrätta

Det här avsnittet vägleder dig genom att förbereda ett projekt för att arbeta med Azure Blob Storage klientbibliotek v12 för C++.

Installera paketen

Kommandot vcpkg install installerar Azure Storage Blobs SDK för C++ och nödvändiga beroenden:

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

Mer information finns i GitHub för att hämta och skapa Azure SDK för C++.

Skapa projektet

I Visual Studio skapar du ett nytt C++-konsolprogram för Windows med namnet FilesShareQuickstartV12.

Visual Studio-dialogruta för att konfigurera en ny C++ Windows-konsolapp

Kopiera dina autentiseringsuppgifter från Azure-portalen

När exempelprogrammet skickar en begäran till Azure Storage måste det auktoriseras. Om du vill auktorisera en begäran lägger du till dina autentiseringsuppgifter för lagringskontot i programmet som en anslutningssträng. Följ dessa steg för att visa dina autentiseringsuppgifter för lagringskontot:

  1. Logga in på Azure-portalen.

  2. Leta rätt på ditt lagringskonto.

  3. I menyfönstret för lagringskontot går du till Säkerhet + nätverk och väljer Åtkomstnycklar. Här kan du visa kontoåtkomstnycklarna och den fullständiga anslutningssträngen för varje nyckel.

    Skärmbild som visar var inställningarna för åtkomstnyckeln finns i Azure Portal

  4. I fönstret Åtkomstnycklar väljer du Visa nycklar.

  5. I avsnittet key1 letar du upp värdet Anslutningssträng . Välj ikonen Kopiera till Urklipp för att kopiera anslutningssträngen. Du lägger till värdet för anslutningssträngen i en miljövariabel i nästa avsnitt.

    Skärmbild som visar hur man kopierar en anslutningssträng från Azure-portalen

Konfigurera anslutningssträngen för lagring

När du har kopierat anslutningssträngen skriver du den till en ny miljövariabel på den lokala datorn som kör programmet. Konfigurera miljövariabeln genom att öppna ett konsolfönster och följa anvisningarna för ditt operativsystem. Ersätt <yourconnectionstring> med din faktiska anslutningssträng.

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

När du har lagt till miljövariabeln i Windows måste du starta en ny instans av kommandofönstret.

Starta om program

När du har lagt till miljövariabeln startar du om alla program som körs och som behöver läsa miljövariabeln. Starta till exempel om utvecklingsmiljön eller redigeringsprogrammet innan du fortsätter.

Kodexempel

Dessa exempelkodfragment visar hur du utför följande uppgifter med Azure Files Dela klientbibliotek för C++:

Lägga till inkluderingsfiler

Från projektkatalogen:

  1. Öppna lösningsfilen FilesShareQuickstartV12.sln i Visual Studio.
  2. Öppna källfilen FilesShareQuickstartV12.cpp i Visual Studio.
  3. Ta bort all kod inuti main som genererades automatiskt.
  4. Lägg till #include instruktioner.
#include <iostream>
#include <stdlib.h>
#include <vector>

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

Hämta anslutningssträngen

Koden nedan hämtar anslutningssträngen för ditt lagringskonto från miljövariabeln som skapades i Konfigurera lagringsanslutningssträngen.

Lägg till den här koden i 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

Skapa en filresurs

Skapa en instans av klassen ShareClient genom att anropa funktionen CreateFromConnectionString . Anropa sedan CreateIfNotExists för att skapa den faktiska filresursen i ditt lagringskonto.

Lägg till den här koden i slutet av 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();

Ladda upp filer till en filresurs

Följande kodfragment:

  1. Deklarerar en sträng som innehåller "Hello Azure!".
  2. Hämtar en referens till ett ShareFileClient-objekt genom att hämta roten ShareDirectoryClient och sedan anropa GetFileClient på filresursen från avsnittet Skapa en filresurs .
  3. Laddar upp strängen till filen genom att anropa funktionen UploadFrom . Den här funktionen skapar filen om den inte redan finns eller uppdaterar den om den finns.

Lägg till den här koden i slutet av 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));

Ange metadata för en fil

Ange metadataegenskaperna för en fil genom att anropa funktionen ShareFileClient.SetMetadata .

Lägg till den här koden i slutet av main():

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

Visa en lista över metadata för en fil

Hämta metadataegenskaperna för en fil genom att anropa funktionen ShareFileClient.GetProperties . Metadata finns under fältet Metadata för den returnerade Value. Metadata är ett nyckel/värde-par som liknar exemplet i Ange metadata för en fil.

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

Ladda ned filer

När du har hämtat egenskaperna för filen i List the metadata of a File a new object by using the properties of the uploaded file (Lista metadata för en fil med ett nytt std::vector<uint8_t> objekt med hjälp av egenskaperna för den uppladdade filen). Ladda ned den tidigare skapade filen till det nya std::vector<uint8_t> objektet genom att anropa funktionen DownloadTo i basklassen ShareFileClient . Visa slutligen nedladdade fildata.

Lägg till den här koden i slutet av 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;

Ta bort en fil

Följande kod tar bort bloben från Azure Storage Files-resursen genom att anropa funktionen ShareFileClient.Delete .

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

Ta bort en filresurs

Följande kod rensar de resurser som appen skapade genom att ta bort hela filresursen med hjälp av ShareClient. Ta bort.

Lägg till den här koden i slutet av main():

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

Kör koden

Den här appen skapar en container och laddar upp en textfil till Azure Blob Storage. I exemplet visas sedan blobarna i containern, filen laddas ned och filinnehållet visas. Slutligen tar appen bort bloben och containern.

Utdata från appen liknar följande exempel:

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ästa steg

I den här snabbstarten har du lärt dig hur du laddar upp, laddar ned och listar filer med C++. Du har också lärt dig hur du skapar och tar bort en Azure Storage Files-resurs.

Om du vill se ett C++ Blob Storage-exempel fortsätter du till: