Vývoj pro Soubory Azure pomocí jazyka 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 naučíte provádět základní operace se službou Azure Files pomocí jazyka C++. Pokud se službou Azure Files začínáte, projděte si koncepty v následujících částech, které vám pomůžou porozumět ukázkám. Tady jsou některé ukázky:

  • 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 služba Soubory Azure je možná 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 tříd a funkcí V/V jazyka C++. Tento článek popisuje, jak psát aplikace, které používají sadu Azure Storage C++ SDK, která používá rozhraní File REST API ke komunikaci se soubory Azure Files.

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 nezbytné závislosti:

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

Další informace najdete na GitHubu a získejte a sestavte 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 žádost do Služby Azure Storage, musí být autorizovaná. Pokud chcete žádost autorizovat, přidejte do aplikace přihlašovací údaje účtu úložiště jako připojovací řetězec. Pokud chcete zobrazit přihlašovací údaje účtu úložiště, postupujte takto:

  1. Přihlaste se k portálu Azure.

  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 můžete zobrazit přístupové klíče účtu a kompletní připojovací řetězec pro každý klíč.

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

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

  5. V části klíč1 vyhledejte hodnotu připojovacího řetězce. Výběrem ikony Kopírovat do schránky zkopírujte připojovací řetězec. Hodnotu připojovací řetězec 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í řetězec ji zapište do nové proměnné prostředí na místním počítači, na kterém běží aplikace. 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ými připojovací řetězec.

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Po přidání proměnné prostředí ve Windows musíte spustit novou instanci příkazového okna.

Restartování programů

Po přidání proměnné prostředí restartujte všechny spuštěné programy, které budou muset 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 sdílené složky Azure pro 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ý kód uvnitř main , který byl automaticky vygenerován.
  4. Add #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í řetězec ú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ření instance Třídy ShareClient voláním CreateFromConnectionString funkce. Potom zavolejte CreateIfNotExists a vytvořte skutečnou sdílenou složku ve vašem účtu úložiště.

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í "Hello Azure!".
  2. Získá odkaz na Objekt ShareFileClient získáním kořenového ShareDirectoryClient a volání GetFileClient ve sdílené složce ze sekce 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 ano.

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 pro soubor voláním funkce ShareFileClient.GetProperties . Metadata jsou pod Metadata polem vráceného Value. Metadata budou pár klíč-hodnota podobný příkladu v 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 seznamu metadat 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 stažená data 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 Files 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 vytvořené aplikací 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 služby Azure Blob Storage. Příklad pak vypíše objekty blob v kontejneru, stáhne soubor a zobrazí obsah souboru. Aplikace nakonec odstraní objekt blob a kontejner.

Výstup aplikace je podobný 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 zjistili, jak nahrát, stáhnout a vypsat soubory pomocí jazyka C++. Dozvěděli jste se také, jak vytvořit a odstranit sdílenou složku Azure Storage.

Pokud chcete zobrazit ukázku služby C++ Blob Storage, pokračujte následujícími postupy: