Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Začínáme s klientskou knihovnou azure Blob Storage pro C++. Azure Blob Storage je řešení úložiště objektů Od Microsoftu pro cloud. Pomocí těchto kroků nainstalujte balíček a vyzkoušejte si ukázkový kód pro základní úlohy.
| Dokumentace k rozhraní API | Zdrojový kód knihovny | Příklady |
Požadavky
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Kompilátor C++
- CMake
- vcpkg – správce balíčků C a C++
Nastavení
Tato část vás provede přípravou projektu pro práci s klientskou knihovnou služby Azure Blob Storage pro C++. Nejjednodušší způsob, jak získat sadu Azure SDK pro C++, je použít vcpkg správce balíčků.
Instalace balíčků
vcpkg install Pomocí příkazu nainstalujte knihovnu Azure Blob Storage pro C++ a potřebné závislosti:
vcpkg.exe install azure-storage-blobs-cpp
Knihovna identit Azure je potřebná pro připojení bez hesla ke službám Azure:
vcpkg.exe install azure-identity-cpp
Další informace o nastavení projektu a práci se sadou Azure SDK pro C++ najdete v souboru Readme sady Azure SDK pro jazyk C++.
Vytvoření projektu
V sadě Visual Studio vytvořte novou konzolovou aplikaci C++ pro Windows s názvem BlobQuickstart.
Objektový model
Azure Blob Storage je optimalizovaná pro ukládání obrovských objemů nestrukturovaných dat. Nestrukturovaná data jsou data, která nevyhovují určitému datovému modelu nebo definici, jako jsou textová nebo binární data. Blob Storage nabízí tři typy prostředků:
- Úložištní účet
- Kontejner v účtu úložiště
- Blob v kontejneru
Na následujícím diagramu jsou vztahy těchto prostředků.
K interakci s těmito prostředky použijte tyto třídy jazyka C++:
-
BlobServiceClient: Třída
BlobServiceClientumožňuje manipulovat s prostředky azure Storage a kontejnery objektů blob. -
BlobContainerClient: Třída
BlobContainerClientumožňuje manipulovat s kontejnery Azure Storage a jejich objekty blob. -
BlobClient: Třída
BlobClientumožňuje manipulovat s objekty blob služby Azure Storage. Je to základní třída pro všechny specializované třídy blob. -
BlockBlobClient: Třída
BlockBlobClientumožňuje manipulovat s objekty blob bloku služby Azure Storage.
Příklady kódu
Tyto ukázkové fragmenty kódu ukazují, jak provádět následující úlohy s klientskou knihovnou služby Azure Blob Storage pro C++:
- Přidat zahrnující soubory
- Ověřování k Azure a autorizace přístupu k datům Blob
- Vytvoření kontejneru
- Nahrání objektů blob do kontejneru
- Seznam objektů blob v kontejneru
- Stažení blobů
- Odstranění kontejneru
Přidání souborů zahrnutí
Z adresáře projektu:
- Otevřete soubor řešení BlobQuickstart.sln v aplikaci Visual Studio
- V sadě Visual Studio otevřete zdrojový soubor BlobQuickstart.cpp .
- Odeberte veškerý kód uvnitř
main, který byl automaticky vygenerován. - Přidejte
#includeausing namespacepříkazy
#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;
Ověřování v Azure a autorizace přístupu k datům objektů blob
Žádosti aplikací do služby Azure Blob Storage musí být autorizované. Použití třídy poskytované klientskou knihovnou Azure Identity je doporučeným přístupem k implementaci připojení bez hesla ke službám Azure ve vašem kódu, včetně Blob Storage.
Žádosti o službu Azure Blob Storage můžete také autorizovat pomocí přístupového klíče účtu. Tento přístup by však měl být používán s opatrností. Vývojáři musí být opatrní, aby nikdy nezpřístupnili přístupový klíč v nezabezpečeném místě. Každý, kdo má přístupový klíč, může autorizovat požadavky na účet úložiště a efektivně má přístup ke všem datům.
DefaultAzureCredential nabízí vylepšené výhody správy a zabezpečení oproti klíči účtu, které umožňují ověřování bez hesla. Obě možnosti jsou demonstrována v následujícím příkladu.
Knihovna Identit Azure poskytuje podporu ověřování tokenů Microsoft Entra napříč sadou Azure SDK. Poskytuje sadu TokenCredential implementací, které je možné použít k vytvoření klientů sady Azure SDK, které podporují ověřování tokenů Microsoft Entra.
DefaultAzureCredential podporuje více metod ověřování a určuje, která metoda se má použít za běhu.
Přiřazení rolí k uživatelskému účtu Microsoft Entra
Při místním vývoji se ujistěte, že uživatelský účet, který přistupuje k datům objektů blob, má správná oprávnění. K čtení a zápisu dat objektů blob budete potřebovat Přispěvatel dat objektů blob služby Storage. Abyste mohli tuto roli přiřadit sami sobě, musíte mít přiřazenou roli Správce uživatelských přístupů nebo jinou roli, která zahrnuje akci Microsoft.Authorization/roleAssignments/write . Role Azure RBAC můžete uživateli přiřadit pomocí webu Azure Portal, Azure CLI nebo Azure PowerShellu. Další informace o roli Přispěvatel dat v objektech blob služby Storage najdete v tématu Přispěvatel dat objektů blob služby Storage. Další informace o dostupných oborech pro přiřazení rolí najdete v tématu Vysvětlení oboru pro Azure RBAC.
V tomto scénáři přiřadíte oprávnění vašemu uživatelskému účtu v rozsahu účtu úložiště, abyste postupovali podle zásady nejnižších oprávnění. Tento postup poskytuje uživatelům jenom minimální potřebná oprávnění a vytváří bezpečnější produkční prostředí.
Následující příklad přiřadí roli Přispěvatel dat v objektech blob služby Storage k vašemu uživatelskému účtu, což poskytuje přístup ke čtení i zápisu dat v objektech blob ve vašem účtu úložiště.
Důležité
Ve většině případů bude trvat minutu nebo dvě, než se přiřazení role rozšíří v Azure, ale ve výjimečných případech může trvat až osm minut. Pokud při prvním spuštění kódu dojde k chybám ověřování, chvíli počkejte a zkuste to znovu.
Na webu Azure Portal vyhledejte svůj účet úložiště pomocí hlavního panelu hledání nebo levé navigace.
Na stránce přehledu účtu úložiště v nabídce vlevo vyberte Řízení přístupu (IAM ).
Na stránce Řízení přístupu (IAM) vyberte kartu Přiřazení rolí.
V horní nabídce vyberte + Přidat a potom z výsledné rozevírací nabídky vyberte Přidat přiřazení role.
Pomocí vyhledávacího pole vyfiltrujte výsledky podle požadované role. V tomto příkladu vyhledejte Úložiště Blob Data Contributor, vyberte odpovídající výsledek a poté zvolte Další.
V části Přiřadit přístup vyberte Uživatel, skupina nebo instanční objekt a pak zvolte + Vybrat členy.
V dialogovém okně vyhledejte své uživatelské jméno Microsoft Entra (obvykle vaše user@domain e-mailová adresa) a pak v dolní části dialogového okna zvolte Vybrat .
Vyberte Zkontrolovat a přiřadit, abyste přešli na poslední stránku, a poté znovu vyberte Zkontrolovat a přiřadit, abyste dokončili proces.
Přihlášení a připojení kódu aplikace k Azure pomocí DefaultAzureCredential
Přístup k datům v účtu úložiště můžete autorizovat pomocí následujícího postupu:
Ujistěte se, že jste ověřeni pomocí stejného účtu Microsoft Entra, ke kterému jste přiřadili roli k účtu úložiště. Ověřování můžete provést prostřednictvím Azure CLI. Přihlaste se k Azure prostřednictvím Azure CLI pomocí následujícího příkazu:
az loginChcete-li použít
DefaultAzureCredential, ujistěte se, že je nainstalovaný balíček azure-identity-cpp, a je přidán následující#include:#include <azure/identity/default_azure_credential.hpp>Přidejte tento kód na konec .
main()Když se kód spustí na místní pracovní stanici,DefaultAzureCredentialpoužije přihlašovací údaje pro vývojáře pro Azure CLI k ověření v 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);Ujistěte se, že aktualizujete název účtu úložiště v identifikátoru URI u objektu
BlobServiceClient. Název účtu úložiště najdete na stránce přehledu webu Azure Portal.
Poznámka:
Při použití sady C++ SDK v produkčním prostředí se doporučuje povolit jenom přihlašovací údaje, které znáte, že vaše aplikace bude používat. Místo použití
DefaultAzureCredentialbyste měli autorizovat konkrétní typ přihlašovacích údajů nebo použítChainedTokenCredentials podporovanými přihlašovacími údaji.
Vytvoření kontejneru
Rozhodněte se o názvu nového kontejneru. Poté vytvořte instanci BlobContainerClient a vytvořte kontejner.
Důležité
Názvy kontejnerů musí být malými písmeny. Další informace o pojmenování kontejnerů a objektů blob najdete v tématu Názvy kontejnerů, objektů blob a metadat a odkazování na ně.
Přidejte tento kód na konec 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();
Nahrajte bloby do kontejneru
Následující fragment kódu:
- Deklaruje řetězec obsahující "Hello Azure!".
- Získá odkaz na objekt BlockBlobClient voláním GetBlockBlobClient na kontejneru z oddílu Vytvořit kontejner.
- Nahraje řetězec do objektu blob voláním funkce UploadFrom . Tato funkce vytvoří objekt blob, pokud ještě neexistuje, nebo ho aktualizuje, pokud ano.
Přidejte tento kód na konec 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));
Seznam blobů v kontejneru
Vypište objekty blob v kontejneru voláním funkce ListBlobs . Do kontejneru byl přidán pouze jeden objekt blob, takže operace vrátí pouze tento objekt blob.
Přidejte tento kód na konec main():
std::cout << "Listing blobs..." << std::endl;
auto listBlobsResponse = containerClient.ListBlobs();
for (auto blobItem : listBlobsResponse.Blobs)
{
std::cout << "Blob name: " << blobItem.Name << std::endl;
}
Stáhnout objekty blob
Získejte vlastnosti nahraného blobu. Potom deklarujte a změňte velikost nového std::vector<uint8_t> objektu pomocí vlastností nahraného objektu blob. Stáhněte dříve vytvořený objekt blob do nového std::vector<uint8_t> objektu voláním funkce DownloadTo v základní třídě BlobClient . Nakonec zobrazte stažená data blobů.
Přidejte tento kód na konec 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;
Odstranit blob
Následující kód odstraní objekt blob z kontejneru Azure Blob Storage voláním funkce BlobClient.Delete .
std::cout << "Deleting blob: " << blobName << std::endl;
blobClient.Delete();
Odstranění kontejneru
Následující kód vyčistí prostředky, které aplikace vytvořila odstraněním celého kontejneru pomocí BlobContainerClient.Odstranit.
Přidejte tento kód na konec main():
std::cout << "Deleting container: " << containerName << std::endl;
containerClient.Delete();
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í blob a kontejner.
Výstup aplikace je podobný následujícímu příkladu:
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
Další kroky
V tomto rychlém průvodci jste se naučili, jak pomocí jazyka C++ nahrát, stáhnout a vypsat bloby. Dozvěděli jste se také, jak vytvořit a odstranit kontejner Azure Blob Storage.
Pokud chcete zobrazit ukázku služby C++ Blob Storage, pokračujte následujícími postupy: