Udostępnij za pośrednictwem


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 Tak Nie
Udziały plików w warstwie Standardowa (GPv2), GRS/GZRS Tak Nie
Udziały plików w warstwie Premium (FileStorage), LRS/ZRS Tak Nie.

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

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.

Okno dialogowe programu Visual Studio służące do konfigurowania nowej aplikacji konsolowej systemu Windows w języku C++

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:

  1. Zaloguj się w witrynie Azure Portal.

  2. Odszukaj konto magazynu.

  3. 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.

    Zrzut ekranu przedstawiający lokalizację ustawień klucza dostępu w witrynie Azure Portal

  4. W okienku Klucze dostępu wybierz pozycję Pokaż klucze.

  5. 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.

    Zrzut ekranu pokazujący sposób kopiowania parametrów połączenia z witryny Azure Portal

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

Z katalogu projektu:

  1. Otwórz plik rozwiązania FilesShareQuickstartV12.sln w programie Visual Studio.
  2. W programie Visual Studio otwórz plik źródłowy FilesShareQuickstartV12.cpp .
  3. Usuń dowolny kod wewnątrz main , który został wygenerowany automatycznie.
  4. 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:

  1. Deklaruje ciąg zawierający ciąg "Hello Azure!".
  2. 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.
  3. 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 Valueelementu . 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: