Programowanie dla usługi Azure Files za pomocą języka C++
Napiwek
Wypróbuj program Microsoft Azure Storage Explorer
Microsoft Azure Storage Explorer jest bezpłatną aplikacją autonomiczną oferowaną przez firmę Microsoft, która umożliwia wizualną pracę z danymi w usłudze Azure Storage w systemach Windows, macOS i Linux.
Dotyczy
Typ udziału plików | SMB | NFS |
---|---|---|
Udziały plików w warstwie Standardowa (GPv2), LRS/ZRS | ||
Udziały plików w warstwie Standardowa (GPv2), GRS/GZRS | ||
Udziały plików w warstwie Premium (FileStorage), LRS/ZRS |
Informacje o tym samouczku
Z tego samouczka dowiesz się, jak wykonywać podstawowe operacje w usłudze Azure Files przy użyciu języka C++. Jeśli dopiero zaczynasz korzystać z usługi Azure Files, zapoznaj się z pojęciami w poniższych sekcjach, które ułatwią zrozumienie przykładów. Niektóre z omówionych próbek to:
- Tworzenie i usuwanie udziałów plików platformy Azure
- Tworzenie i usuwanie katalogów
- Przekazywanie, pobieranie i usuwanie pliku
- Ustawianie i wyświetlanie listy metadanych dla pliku
Uwaga
Ponieważ dostęp do usługi Azure Files można uzyskać za pośrednictwem protokołu SMB, można napisać proste aplikacje, które uzyskują dostęp do udziału plików platformy Azure przy użyciu standardowych klas i funkcji we/wy języka C++. W tym artykule opisano sposób pisania aplikacji korzystających z zestawu SDK języka C++ usługi Azure Storage, który używa interfejsu API REST plików do komunikacji z usługą Azure Files.
Wymagania wstępne
- Subskrypcja platformy Azure
- Konto usługi Azure Storage
- Kompilator języka C++
- CMake
- Vcpkg — menedżer pakietów C i C++
Konfigurowanie
W tej sekcji przedstawiono proces przygotowywania projektu do pracy z biblioteką klienta usługi Azure Blob Storage w wersji 12 dla języka C++.
Instalowanie pakietów
Polecenie vcpkg install
zainstaluje zestaw SDK obiektów blob usługi Azure Storage dla języka C++ i niezbędne zależności:
vcpkg.exe install azure-storage-files-shares-cpp:x64-windows
Aby uzyskać więcej informacji, odwiedź witrynę GitHub, aby uzyskać i skompilować zestaw Azure SDK dla języka C++.
Tworzenie projektu
W programie Visual Studio utwórz nową aplikację konsolową języka C++ dla systemu Windows o nazwie FilesShareQuickstartV12.
Kopiowanie poświadczeń z witryny Azure Portal
Gdy przykładowa aplikacja wysyła żądanie do usługi Azure Storage, musi być autoryzowana. Aby autoryzować żądanie, dodaj poświadczenia konta magazynu do aplikacji jako parametry połączenia. Aby wyświetlić poświadczenia konta magazynu, wykonaj następujące kroki:
Zaloguj się w witrynie Azure Portal.
Odszukaj konto magazynu.
W okienku menu konta magazynu w obszarze Zabezpieczenia i sieć wybierz pozycję Klucze dostępu. W tym miejscu możesz wyświetlić klucze dostępu do konta i kompletne parametry połączenia dla każdego klucza.
W okienku Klucze dostępu wybierz pozycję Pokaż klucze.
W sekcji key1 znajdź wartość Parametry połączenia. Wybierz ikonę Kopiuj do schowka, aby skopiować parametry połączenia. W następnej sekcji dodasz wartość parametry połączenia do zmiennej środowiskowej.
Konfigurowanie parametrów połączenia magazynu
Po skopiowaniu parametry połączenia zapisz ją w nowej zmiennej środowiskowej na komputerze lokalnym z uruchomioną aplikacją. Aby ustawić zmienną środowiskową, otwórz okno konsoli i postępuj zgodnie z instrukcjami dla systemu operacyjnego. Zastąp <yourconnectionstring>
element rzeczywistym parametry połączenia.
setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"
Po dodaniu zmiennej środowiskowej w systemie Windows należy uruchomić nowe wystąpienie okna poleceń.
Ponowne uruchamianie programów
Po dodaniu zmiennej środowiskowej uruchom ponownie wszystkie uruchomione programy, które będą musiały odczytać zmienną środowiskową. Na przykład uruchom ponownie środowisko deweloperskie lub edytor przed kontynuowaniem.
Przykłady kodu
W poniższych przykładowych fragmentach kodu pokazano, jak wykonać następujące zadania za pomocą biblioteki klienta udziału usługi Azure Files dla języka C++:
- Dodawanie plików dołączanych
- Pobieranie parametry połączenia
- Tworzenie udziału plików
- Przekazywanie plików do udziału plików
- Ustawianie metadanych pliku
- Wyświetlanie listy metadanych pliku
- Pobieranie plików
- Usuwanie pliku
- Usuwanie udziału plików
Dodawanie plików dołączanych
Z katalogu projektu:
- Otwórz plik rozwiązania FilesShareQuickstartV12.sln w programie Visual Studio.
- W programie Visual Studio otwórz plik źródłowy FilesShareQuickstartV12.cpp .
- Usuń dowolny kod wewnątrz
main
, który został wygenerowany automatycznie. - Dodaj
#include
instrukcje.
#include <iostream>
#include <stdlib.h>
#include <vector>
#include <azure/storage/files/shares.hpp>
Pobieranie parametrów połączenia
Poniższy kod pobiera parametry połączenia konta magazynu ze zmiennej środowiskowej utworzonej w temacie Konfigurowanie parametry połączenia magazynu.
Dodaj ten kod wewnątrz main()
elementu :
// 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
Tworzenie udziału plików
Utwórz wystąpienie klasy ShareClient , wywołując funkcję CreateFromConnectionString . Następnie wywołaj metodę CreateIfNotExists , aby utworzyć rzeczywisty udział plików na koncie magazynu.
Dodaj ten kod na końcu elementu 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();
Przekazywanie plików do udziału plików
Poniższy fragment kodu:
- Deklaruje ciąg zawierający ciąg "Hello Azure!".
- Pobiera odwołanie do obiektu ShareFileClient przez pobranie głównego obiektu ShareDirectoryClient, a następnie wywołanie elementu GetFileClient w udziale plików z sekcji Tworzenie udziału plików.
- Przekazuje ciąg do pliku, wywołując funkcję UploadFrom . Ta funkcja tworzy plik, jeśli jeszcze nie istnieje, lub aktualizuje go, jeśli nie istnieje.
Dodaj ten kod na końcu elementu 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));
Ustawianie metadanych pliku
Ustaw właściwości metadanych dla pliku, wywołując funkcję ShareFileClient.SetMetadata .
Dodaj ten kod na końcu elementu main()
:
Azure::Storage::Metadata fileMetadata = { {"key1", "value1"}, {"key2", "value2"} };
fileClient.SetMetadata(fileMetadata);
Wyświetlanie listy metadanych pliku
Pobierz właściwości metadanych dla pliku, wywołując funkcję ShareFileClient.GetProperties . Metadane są w Metadata
polu zwróconego Value
elementu . Metadane będą parą klucz-wartość podobną do przykładu w temacie Ustawianie metadanych pliku.
// 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;
}
Pobieranie plików
Po pobraniu właściwości pliku na liście metadanych pliku nowy std::vector<uint8_t>
obiekt przy użyciu właściwości przekazanego pliku. Pobierz wcześniej utworzony plik do nowego std::vector<uint8_t>
obiektu, wywołując funkcję DownloadTo w klasie bazowej ShareFileClient . Na koniec wyświetl pobrane dane pliku.
Dodaj ten kod na końcu elementu 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;
Usuwanie pliku
Poniższy kod usuwa obiekt blob z udziału plików usługi Azure Storage, wywołując funkcję ShareFileClient.Delete .
std::cout << "Deleting file: " << fileName << std::endl;
fileClient.DeleteIfExists();
Usuwanie udziału plików
Poniższy kod czyści zasoby utworzone przez aplikację przez usunięcie całego udziału plików przy użyciu programu ShareClient.Usuń.
Dodaj ten kod na końcu elementu main()
:
std::cout << "Deleting files share: " << shareName << std::endl;
shareClient.DeleteIfExists();
Uruchamianie kodu
Ta aplikacja tworzy kontener i przekazuje plik tekstowy do usługi Azure Blob Storage. W tym przykładzie zostanie wyświetlona lista obiektów blob w kontenerze, pobranie pliku i wyświetlenie zawartości pliku. Na koniec aplikacja usuwa obiekt blob i kontener.
Dane wyjściowe aplikacji są podobne do następującego przykładu:
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
Następne kroki
W tym przewodniku Szybki start przedstawiono sposób przekazywania, pobierania i wyświetlania listy plików przy użyciu języka C++. Przedstawiono również sposób tworzenia i usuwania udziału usługi Azure Storage Files.
Aby wyświetlić przykład usługi Blob Storage w języku C++, przejdź do: