Vývoj pro Azure Files pomocí C++

Tip

Vyzkoušení Microsoft Azure Storage Exploreru

Microsoft Azure Storage Explorer je bezplatná samostatná aplikace od Microsoftu, která umožňuje vizuálně pracovat s daty Azure Storage ve Windows, macOS a Linuxu.

Platí pro

Typ sdílené složky SMB NFS
Sdílené složky úrovně Standard (GPv2), LRS/ZRS Yes No
Sdílené složky úrovně Standard (GPv2), GRS/GZRS Yes No
Sdílené složky úrovně Premium (FileStorage), LRS/ZRS Yes No

O tomto kurzu

V tomto kurzu se dozvíte, jak provádět základní operace s Azure Files pomocí jazyka C++. Pokud s Azure Files začínáte, pomůže vám při pochopení ukázek projít si koncepty v následujících částech. Mezi uvedené ukázky patří:

  • Vytvoření a odstranění sdílených složek Azure
  • Vytváření a odstraňování adresářů
  • Nahrání, stažení a odstranění souboru
  • Nastavení a výpis metadat souboru

Poznámka

Vzhledem k tomu, že Azure Files mohou být přístupné přes protokol SMB, je možné psát jednoduché aplikace, které přistupují ke sdílené složce Azure, pomocí standardních vstupně-výstupních tříd a funkcí C++. Tento článek popisuje, jak psát aplikace, které používají sadu Azure Storage C++ SDK, která ke komunikaci s Azure Files používá souborové rozhraní REST API.

Požadavky

Nastavení

Tato část vás provede přípravou projektu pro práci s klientskou knihovnou Azure Blob Storage v12 pro C++.

Instalace balíčků

Příkaz vcpkg install nainstaluje sadu Azure Storage Blobs SDK pro C++ a potřebné závislosti:

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

Další informace najdete na GitHubu, kde můžete získat a sestavit sadu Azure SDK pro C++.

Vytvoření projektu

V sadě Visual Studio vytvořte novou konzolovou aplikaci C++ pro Windows s názvem FilesShareQuickstartV12.

Dialogové okno sady Visual Studio pro konfiguraci nové konzolové aplikace C++ pro Windows

Zkopírování přihlašovacích údajů z webu Azure Portal

Když ukázková aplikace odešle požadavek do Služby Azure Storage, musí být autorizována. Pokud chcete žádost autorizovat, přidejte do aplikace přihlašovací údaje účtu úložiště jako připojovací řetězec. Přihlašovací údaje účtu úložiště zobrazíte takto:

  1. Přihlaste se k webu Azure Portal.

  2. Vyhledejte svůj účet úložiště.

  3. V podokně nabídek účtu úložiště v části Zabezpečení a sítě vyberte Přístupové klíče. Tady si můžete prohlédnout přístupové klíče účtu a úplný připojovací řetězec pro každý klíč.

    Snímek obrazovky znázorňující umístění nastavení přístupového klíče v Azure Portal

  4. V podokně Přístupové klíče vyberte Zobrazit klíče.

  5. V části key1 vyhledejte hodnotu Připojovací řetězec . Výběrem ikony Zkopírovat do schránky zkopírujte připojovací řetězec. Hodnotu připojovacího řetězce přidáte do proměnné prostředí v další části.

    Snímek obrazovky ukazující zkopírování připojovacího řetězce z webu Azure Portal

Konfigurace připojovacího řetězce úložiště

Po zkopírování připojovacího řetězce ho zapište do nové proměnné prostředí na místním počítači, na kterém aplikace běží. Proměnnou prostředí nastavíte tak, že otevřete okno konzoly a budete postupovat podle pokynů pro váš operační systém. Nahraďte <yourconnectionstring> skutečným připojovacím řetězcem.

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Po přidání proměnné prostředí v systému Windows je nutné spustit novou instanci příkazového okna.

Restartujte programy

Po přidání proměnné prostředí restartujte všechny spuštěné programy, které budou potřebovat přečíst proměnnou prostředí. Než budete pokračovat, restartujte například vývojové prostředí nebo editor.

Příklady kódu

Tyto ukázkové fragmenty kódu ukazují, jak provádět následující úlohy s klientskou knihovnou Azure Files Share pro jazyk C++:

Přidání souborů zahrnutí

Z adresáře projektu:

  1. Otevřete soubor řešení FilesShareQuickstartV12.sln v sadě Visual Studio.
  2. V sadě Visual Studio otevřete zdrojový soubor FilesShareQuickstartV12.cpp .
  3. Odeberte veškerý automaticky vygenerovaný kód main .
  4. Přidejte #include příkazy.
#include <iostream>
#include <stdlib.h>
#include <vector>

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

Získání připojovacího řetězce

Následující kód načte připojovací řetězec pro váš účet úložiště z proměnné prostředí vytvořené v části Konfigurace připojovacího řetězce úložiště.

Přidejte tento kód do 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

Vytvoření sdílené složky

Vytvořte instanci shareclient třídy voláním funkce CreateFromConnectionString . Pak volejte Metodu CreateIfNotExists a vytvořte ve svém účtu úložiště skutečnou sdílenou složku souborů.

Přidejte tento kód na konec :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();

Nahrání souborů do sdílené složky

Následující fragment kódu:

  1. Deklaruje řetězec obsahující text "Hello Azure!".
  2. Získá odkaz na Objekt ShareFileClient získáním kořenové ShareDirectoryClient a voláním GetFileClient sdílené složky z oddílu Vytvořit sdílenou složku .
  3. Nahraje řetězec do souboru voláním funkce UploadFrom . Tato funkce vytvoří soubor, pokud ještě neexistuje, nebo ho aktualizuje, pokud neexistuje.

Přidejte tento kód na konec :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));

Nastavení metadat souboru

Nastavte vlastnosti metadat souboru voláním funkce ShareFileClient.SetMetadata .

Přidejte tento kód na konec :main()

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

Výpis metadat souboru

Získejte vlastnosti metadat souboru voláním funkce ShareFileClient.GetProperties . Metadata se nachází pod polem Metadata vráceného Valueobjektu . Metadata budou párem klíč-hodnota, podobně jako v příkladu v tématu Nastavení metadat souboru.

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

Stažení souborů

Po načtení vlastností souboru v části Vypsat metadata souboru nový std::vector<uint8_t> objekt pomocí vlastností nahraného souboru. Stáhněte dříve vytvořený soubor do nového std::vector<uint8_t> objektu voláním funkce DownloadTo v základní třídě ShareFileClient . Nakonec zobrazte data staženého souboru.

Přidejte tento kód na konec :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;

Odstranění souboru

Následující kód odstraní objekt blob ze sdílené složky Azure Storage voláním funkce ShareFileClient.Delete .

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

Odstranění sdílené složky

Následující kód vyčistí prostředky, které aplikace vytvořila, odstraněním celé sdílené složky pomocí shareclient. Odstranit.

Přidejte tento kód na konec :main()

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

Spuštění kódu

Tato aplikace vytvoří kontejner a nahraje textový soubor do Azure Blob Storage. Příklad pak vypíše objekty blob v kontejneru, stáhne soubor a zobrazí obsah souboru. Nakonec aplikace odstraní objekt blob a kontejner.

Výstup aplikace se podobá následujícímu příkladu:

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

Další kroky

V tomto rychlém startu jste se naučili nahrávat, stahovat a vypisovat soubory pomocí jazyka C++. Také jste zjistili, jak vytvořit a odstranit sdílenou složku Azure Storage.

Pokud chcete zobrazit ukázku služby Blob Storage v jazyce C++, pokračujte na: