Mulai cepat: Pustaka klien Azure Blob Storage v12 untuk C++

Mulai menggunakan pustaka klien Azure Blob Storage v12 untuk C++. Azure Blob Storage adalah solusi penyimpanan objek Microsoft untuk cloud. Ikuti langkah-langkah untuk menginstal paket dan cobalah contoh kode untuk tugas dasar. Blob Storage dioptimalkan untuk menyimpan data tidak terstruktur dalam jumlah besar.

Gunakan pustaka klien Azure Blob Storage v12 untuk C++ untuk:

  • Membuat kontainer
  • Mengunggah blob ke Azure Storage
  • Mencantumkan semua blob dalam kontainer
  • Mengunduh blob ke komputer lokal Anda
  • Menghapus kontainer

Sumber:

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-blobs-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 yang bernama BlobQuickstartV12.

Visual Studio dialog for configuring a new C++ Windows console app

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.

    Screenshot that shows where the access key settings are in the Azure portal

  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.

    Screenshot showing how to copy a connection string from the Azure portal

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.

Model objek

Azure Blob Storage dioptimalkan untuk menyimpan data tidak terstruktur dalam jumlah besar. Data tidak terstruktur adalah data yang tidak mematuhi model atau definisi data tertentu, seperti teks atau data biner. Blob Storage menawarkan tiga jenis sumber daya:

  • Akun penyimpanan
  • Kontainer di akun penyimpanan
  • Blob di dalam kontainer

Diagram berikut menunjukkan hubungan antara ketiga sumber daya ini.

Diagram of Blob Storage architecture

Gunakan kelas C++ berikut untuk berinteraksi dengan sumber daya ini:

  • BlobServiceClient: Kelas BlobServiceClient memungkinkan Anda memanipulasi sumber daya Microsoft Azure Storage dan kontainer blob.
  • BlobContainerClient: Kelas BlobContainerClient ini memungkinkan Anda memanipulasi kontainer Microsoft Azure Storage dan blob-nya.
  • BlobClient: Kelas BlobClient ini memungkinkan Anda memanipulasi blob Azure Storage. Ini adalah kelas dasar untuk semua kelas blob khusus.
  • BlockBlobClient: Kelas BlockBlobClient ini memungkinkan Anda memanipulasi blob blok Azure Storage.

Contoh kode

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

Menambahkan file

Dari direktori proyek:

  1. Buka file solusi BlobQuickstartV12.sln di Visual Studio
  2. Di dalam Visual Studio, buka file sumber BlobQuickstartV12.cpp
  3. Hapus kode apa pun di dalam main yang telah dibuat secara otomatis
  4. Tambahkan pernyataan #include
#include <stdlib.h>
#include <iostream>
#include <azure/storage/blobs.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 kontainer

Buat instans kelas BlobContainerClient dengan memanggil fungsi CreateFromConnectionString. Lalu panggil CreateIfNotExistst untuk membuat kontainer aktual di akun penyimpanan Anda.

Penting

Nama kontainer harus menggunakan huruf kecil. Untuk informasi selengkapnya tentang penamaan kontainer dan blob, lihat Menamai dan Mereferensikan Kontainer, Blob, dan Metadata.

Tambahkan kode ini ke akhir main():

using namespace Azure::Storage::Blobs;

std::string containerName = "myblobcontainer";

// Initialize a new instance of BlobContainerClient
BlobContainerClient containerClient
    = BlobContainerClient::CreateFromConnectionString(connectionString, containerName);

// Create the container. This will do nothing if the container already exists.
std::cout << "Creating container: " << containerName << std::endl;
containerClient.CreateIfNotExists();

Mengunggah blob ke kontainer

Cuplikan kode berikut:

  1. Menyatakan string yang berisi "Halo Azure!".
  2. Mendapatkan referensi ke objek BlockBlobClient dengan memanggil GetBlockBlobClient pada kontainer dari bagian Buat kontainer.
  3. Unggah string ke blob dengan memanggil fungsi ‚ÄčUploadFrom. Fungsi ini membuat blob jika belum ada, atau memperbaruinya jika sudah ada.

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

Mencantumkan blob dalam kontainer

Buat daftar blob dalam kontainer dengan memanggil metode ListBlobs. Hanya satu blob yang telah ditambahkan ke kontainer, sehingga operasi mengembalikan blob itu saja.

Tambahkan kode ini ke akhir main():

std::cout << "Listing blobs..." << std::endl;
auto listBlobsResponse = containerClient.ListBlobs();
for (auto blobItem : listBlobsResponse.Blobs)
{
    std::cout << "Blob name: " << blobItem.Name << std::endl;
}

Mengunduh blob

Dapatkan properti blob yang diunggah. Kemudian, nyatakan dan ubah ukuran objek std::vector<uint8_t> baru dengan menggunakan properti blob yang diunggah. Unduh blob yang dibuat sebelumnya ke objek std::vector<uint8_t> baru dengan memanggil fungsi DownloadTo di kelas dasar BlobClient. Terakhir, tampilkan data blob yang diunduh.

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

Menghapus blob

Kode berikut menghapus blob dari kontainer Azure Blob Storage dengan memanggil fungsi BlobClient.Delete.

std::cout << "Deleting blob: " << blobName << std::endl;
blobClient.Delete();

Menghapus kontainer

Kode berikut membersihkan sumber daya yang dibuat aplikasi dengan menghapus seluruh kontainer menggunakan BlobContainerClient.Delete.

Tambahkan kode ini ke akhir main():

std::cout << "Deleting container: " << containerName << std::endl;
containerClient.Delete();

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 Blob Storage v12 - 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

Langkah berikutnya

Di mulai cepat ini, Anda belajar cara mengunggah, mengunduh, dan mencantumkan blob menggunakan C++. Anda juga telah mempelajari cara membuat dan menghapus kontainer Azure Blob Storage.

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