Dikembangkan untuk Azure Files dengan C++

Tip

Coba Explorer Microsoft Azure Storage

Explorer Microsoft Azure Storage adalah aplikasi mandiri gratis dari Microsoft yang memungkinkan Anda bekerja secara visual dengan data Azure Storage di Windows, macOS, dan Linux.

Berlaku untuk

Jenis berbagi File SMB NFS
Berbagi file standar (GPv2), LRS/ZRS Ya Tidak
Berbagi file standar (GPv2), GRS/GZRS Ya Tidak
Berbagi file premium (FileStorage), LRS/ZRS Ya Tidak

Tentang tutorial ini

Dalam tutorial ini, Anda akan mempelajari cara melakukan operasi dasar di Azure Files menggunakan C++. Jika Anda baru menggunakan Azure Files, mempelajari konsep di bagian berikut akan membantu memahami sampel. Beberapa sampel yang tercakup adalah:

  • Buat dan hapus berbagi file Azure
  • Buat dan hapus direktori
  • Unggah, unduh, dan hapus file
  • Mengatur dan mencantumkan metadata untuk file

Catatan

Karena Azure Files dapat diakses melalui SMB, Anda dapat menulis aplikasi sederhana yang mengakses berbagi file Azure menggunakan kelas dan fungsi I/O C++ standar. Artikel ini akan menjelaskan cara menulis aplikasi yang menggunakan Azure Storage C++ SDK, yang menggunakan REST API File berkomunikasi dengan Azure Files.

Prasyarat

Menyiapkan

Bagian ini akan memandu Anda dalam menyiapkan proyek untuk dikerjakan dengan pustaka klien Azure Blob Storage v12 untuk C++.

Menginstal paket

Perintah vcpkg install akan menginstal SDK Azure Storage Blobs untuk C++ dan dependensi yang diperlukan:

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

Untuk informasi selengkapnya, kunjungi GitHub untuk memperoleh dan membangun SDK Azure untuk C++.

Membuat proyek

Di Visual Studio, buat aplikasi konsol C++ baru untuk Windows bernama FilesShareQuickstartV12.

Dialog Visual Studio untuk mengonfigurasi aplikasi konsol Windows C++ baru

Salin kredensial Anda dari portal Microsoft Azure

Saat aplikasi contoh membuat permintaan ke Azure Storage, aplikasi contoh harus diotorisasi. Untuk mengotorisasi permintaan, tambahkan kredensial akun penyimpanan Anda ke aplikasi sebagai string koneksi. Untuk melihat kredensial akun penyimpanan Anda, ikuti langkah-langkah berikut:

  1. Masuk ke portal Azure.

  2. Temukan akun penyimpanan Anda.

  3. Di panel menu akun penyimpanan, di Keamanan + jaringan, pilih Kunci akses. Di sini, Anda dapat melihat kunci akses akun dan string koneksi lengkap untuk setiap kunci.

    Cuplikan layar yang memperlihatkan tempat pengaturan kunci akses berada di portal Microsoft Azure

  4. Di panel Kunci akses, pilih Tampilkan kunci.

  5. Di bagian kunci1, cari nilai String koneksi. Pilih ikon Salin ke clipboard untuk menyalin string koneksi. Anda akan menambah nilai string koneksi ke variabel lingkungan di bagian berikutnya.

    Cuplikan layar memperlihatkan cara menyalin string koneksi dari portal Microsoft Azure

Konfigurasikan string koneksi penyimpanan Anda

Setelah menyalin string koneksi Anda, tuliskan ke variabel lingkungan baru di komputer lokal yang menjalankan aplikasi. Untuk mengatur variabel lingkungan, buka jendela konsol, dan ikuti petunjuk untuk sistem operasi Anda. Ganti <yourconnectionstring> dengan string koneksi Anda yang sebenarnya.

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Setelah menambahkan variabel lingkungan di Windows, Anda harus memulai instans baru dari jendela perintah.

Menghidupkan ulang program

Setelah Anda menambahkan variabel lingkungan, hidupkan ulang semua program yang sedang berjalan yang perlu membaca variabel lingkungan. Misalnya, hidupkan ulang lingkungan pengembangan atau editor sebelum Anda melanjutkan.

Contoh kode

Contoh cuplikan kode ini menunjukkan cara melakukan tugas berikut dengan pustaka klien Azure Files Share untuk C++:

Menambahkan file

Dari direktori proyek:

  1. Buka file solusi FilesShareQuickstartV12.sln di Visual Studio.
  2. Dalam Visual Studio, buka file sumber FilesShareQuickstartV12.cpp.
  3. Hapus kode apa pun di dalam main yang telah dihasilkan secara otomatis.
  4. Tambahkan pernyataan #include.
#include <iostream>
#include <stdlib.h>
#include <vector>

#include <azure/storage/files/shares.hpp>

Dapatkan string koneksi

Kode di bawah ini mengambil string koneksi untuk akun penyimpanan Anda dari variabel lingkungan yang dibuat di Konfigurasikan string koneksi penyimpanan Anda.

Tambahkan kode ini di dalam 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

Membuat Berbagi File

Buat instans kelas ShareClient dengan memanggil fungsi CreateFromConnectionString. Lalu panggil CreateIfNotExists untuk membuat berbagi file aktual di akun penyimpanan Anda.

Tambahkan kode ini ke akhir 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();

Mengunggah file ke Berbagi File

Cuplikan kode berikut:

  1. Menyatakan string yang berisi "Halo Azure!".
  2. Dapatkan referensi ke objek ShareFileClient dengan mendapatkan akar ShareDirectoryClient lalu panggil GetFileClient pada berbagi file dari bagian Membuat Berbagi File.
  3. Unggah string ke file dengan memanggil fungsi ​Upload​From. Fungsi ini membuat file jika belum ada atau memperbaruinya jika telah ada.

Tambahkan kode ini ke akhir 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));

Mengatur metadata File

Atur properti metadata untuk file dengan memanggil fungsi ShareFileClient.SetMetadata.

Tambahkan kode ini ke akhir main():

Azure::Storage::Metadata fileMetadata = { {"key1", "value1"}, {"key2", "value2"} };
fileClient.SetMetadata(fileMetadata);

Mencantumkan metadata File

Dapatkan properti metadata untuk file dengan memanggil fungsi ShareFileClient.GetProperties. Metadata berada di bidang Metadata dari Value yang ditampilkan. Metadata akan menjadi pasangan kunci nilai, mirip dengan contoh dalam Mengatur metadata File.

// 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;
}

Mengunduh file

Setelah mengambil properti file di Mencantumkan metadata File objek std::vector<uint8_t> baru dengan menggunakan properti file yang diunggah. Unduh file yang dibuat sebelumnya ke objek std::vector<uint8_t> baru dengan memanggil fungsi ​DownloadTo di kelas dasar ShareFileClient. Terakhir, tampilkan data file yang diunduh.

Tambahkan kode ini ke akhir 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;

Hapus berkas

Kode berikut menghapus blob dari Azure Storage Files Share dengan memanggil fungsi ShareFileClient.Delete.

std::cout << "Deleting file: " << fileName << std::endl;
fileClient.DeleteIfExists();

Menghapus berbagi file

Kode berikut membersihkan sumber daya yang dibuat aplikasi dengan menghapus seluruh Berbagi File menggunakan ShareClient.​Delete.

Tambahkan kode ini ke akhir main():

std::cout << "Deleting files share: " << shareName << std::endl;
shareClient.DeleteIfExists();

Menjalankan kode

Aplikasi ini membuat kontainer dan mengunggah file teks ke Azure Blob Storage. Contoh ini kemudian mencantumkan blob dalam kontainer, mengunduh file, dan menampilkan isi file. Akhirnya, aplikasi menghapus blob dan kontainer.

Output aplikasi mirip dengan contoh berikut:

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

Langkah berikutnya

Di mulai cepat ini, Anda telah mempelajari cara mengunggah, mengunduh, dan mencantumkan file menggunakan C++. Anda juga telah mempelajari cara membuat dan menghapus Azure Storage Files Share.

Untuk melihat sampel Blob Storage C++, lanjutkan ke: