Programowanie dla Azure Files przy użyciu języka C++

Porada

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 na Azure Files przy użyciu języka C++. Jeśli dopiero zaczynasz Azure Files, zapoznaj się z pojęciami w poniższych sekcjach, które będą pomocne w zrozumieniu przykładów. Oto niektóre z omówionych próbek:

  • 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 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 Azure Files.

Wymagania wstępne

Konfigurowanie

Ta sekcja przeprowadzi Cię przez proces przygotowywania projektu do pracy z biblioteką klienta 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 w języku C++ dla systemu Windows

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 pełne parametry połączenia dla każdego klucza.

    Zrzut ekranu przedstawiający lokalizację ustawień klucza dostępu w 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ść parametrów 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 parametrów 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> wartość rzeczywistymi parametrami 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 projektowe 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 Azure Files Udostępnianie biblioteki klienta dla języka C++:

Dodawanie plików dołączania

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 dla konta magazynu ze zmiennej środowiskowej utworzonej w temacie Konfigurowanie parametrów 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 to zrobi.

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ą pod Metadata polem 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 przez wywołanie funkcji 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 Azure Blob Storage. Następnie przykład wyświetla listę obiektów blob w kontenerze, pobiera plik i wyświetla zawartość 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 plików usługi Azure Storage.

Aby wyświetlić przykład usługi Blob Storage w języku C++, przejdź do: