Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
C++ için Azure Blob Depolama istemci kitaplığını kullanmaya başlayın. Azure Blob Depolama, Microsoft'un bulut için nesne depolama çözümüdür. Paketi yüklemek için bu adımları izleyin ve temel görevler için örnek kodu deneyin.
| API başvuru belgeleri | Kitaplık kaynak kodu | Örnekleri |
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- C++ derleyicisi
- CMake
- vcpkg - C ve C++ paket yöneticisi
Kurulum
Bu bölümde, C++ için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere bir proje hazırlama işleminde size yol gösterilir. C++ için Azure SDK'sını edinmenin en kolay yolu paket yöneticisini vcpkg kullanmaktır.
Paketleri yükleme
vcpkg install C++ için Azure Blob Depolama kitaplığını ve gerekli bağımlılıkları yüklemek için komutunu kullanın:
vcpkg.exe install azure-storage-blobs-cpp
Azure hizmetlerine parolasız bağlantılar için Azure Kimlik kitaplığı gereklidir:
vcpkg.exe install azure-identity-cpp
Proje kurulumu ve C++ için Azure SDK ile çalışma hakkında daha fazla bilgi için bkz. C++ için Azure SDK benioku.
Projeyi oluşturma
Visual Studio'da, Windows için BlobQuickstart adlı yeni bir C++ konsol uygulaması oluşturun.
Nesne modeli
Azure Blob Depolama, çok büyük miktarlarda yapılandırılmamış verileri depolamak için iyileştirilmiştir. Yapılandırılmamış veriler, metin veya ikili veriler gibi belirli bir veri modeline veya tanımına uymayan verilerdir. Blob Depolama üç tür kaynak sunar:
- Depolama hesabı
- Depolama hesabındaki bir kapsayıcı
- Kapsayıcıdaki bir blob
Aşağıdaki diyagramda bu kaynaklar arasındaki ilişki gösterilmektedir.
Bu kaynaklarla etkileşime geçmek için şu C++ sınıflarını kullanın:
-
BlobServiceClient: sınıfı,
BlobServiceClientAzure Depolama kaynaklarını ve blob kapsayıcılarını işlemenize olanak tanır. -
BlobContainerClient: sınıfı,
BlobContainerClientAzure Depolama kapsayıcılarını ve bloblarını işlemenize olanak tanır. -
BlobClient: sınıfı,
BlobClientAzure Depolama bloblarını işlemenize olanak tanır. Tüm özel blob sınıfları için temel sınıftır. -
BlockBlobClient: sınıfı,
BlockBlobClientAzure Depolama blok bloblarını işlemenize olanak tanır.
Kod örnekleri
Bu örnek kod parçacıkları, C++ için Azure Blob Depolama istemci kitaplığıyla aşağıdaki görevlerin nasıl yapılacağını gösterir:
- Include dosyaları ekle
- Azure'da kimlik doğrulaması ve blob verilerine erişim yetkisi verme
- Kapsayıcı oluşturma
- Blobları kapsayıcıya yükleme
- Kapsayıcıdaki blobları listeleme
- Blobları indirme
- Kapsayıcıyı silme
Include dosyaları ekle
Proje dizininden:
- BlobQuickstart.sln çözüm dosyasını Visual Studio'da açma
- Visual Studio'da BlobQuickstart.cpp kaynak dosyasını açın
- Otomatik oluşturulan kodun içindeki
maintüm kodları kaldırma -
#includeveusing namespaceifadelerini ekle
#include <iostream>
#include <azure/core.hpp>
#include <azure/identity/default_azure_credential.hpp>
#include <azure/storage/blobs.hpp>
using namespace Azure::Identity;
using namespace Azure::Storage::Blobs;
Azure'da kimlik doğrulaması ve blob verilerine erişim yetkisi verme
Azure Blob Depolama'ya yönelik uygulama istekleri yetkilendirilmelidir.
DefaultAzureCredential Azure Identity istemci kitaplığı tarafından sağlanan sınıfı kullanmak, Blob Depolama da dahil olmak üzere kodunuzdaki Azure hizmetlerine parolasız bağlantılar uygulamak için önerilen yaklaşımdır.
Ayrıca hesap erişim anahtarını kullanarak Azure Blob Depolama'ya yönelik istekleri yetkilendirilebilirsiniz. Ancak bu yaklaşım dikkatli kullanılmalıdır. Geliştiriciler, erişim anahtarını güvenli olmayan bir konumda asla kullanıma sunmamak için dikkatli olmalıdır. Erişim anahtarına sahip olan herkes, depolama hesabına yönelik istekleri yetkilendirebiliyor ve tüm verilere etkin bir şekilde erişim sahibi oluyor.
DefaultAzureCredential parolasız kimlik doğrulamasına izin vermek için hesap anahtarı üzerinde gelişmiş yönetim ve güvenlik avantajları sunar. Her iki seçenek de aşağıdaki örnekte gösterilmiştir.
Azure Kimlik kitaplığı, Azure SDK genelinde Microsoft Entra belirteci kimlik doğrulaması desteği sağlar. Microsoft Entra belirteci kimlik doğrulamasını TokenCredential destekleyen Azure SDK istemcileri oluşturmak için kullanılabilecek bir dizi uygulama sağlar.
DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler.
Microsoft Entra kullanıcı hesabınıza rol atama
Yerel olarak geliştirme yaparken blob verilerine erişen kullanıcı hesabının doğru izinlere sahip olduğundan emin olun. Blob verilerini okumak ve yazmak için "Storage Blob Data Contributor" rolüne ihtiyacınız vardır. Kendinize bu rolü atamak için Kullanıcı Erişimi Yöneticisi rolüne veya Microsoft.Authorization/roleAssignments/write eylemini içeren başka bir role atanmalısınız. Azure portalı, Azure CLI veya Azure PowerShell'i kullanarak kullanıcıya Azure RBAC rolleri atayabilirsiniz. Depolama Blob Verisi Katkıda Bulunan rolü hakkında daha fazla bilgi için Depolama Blob Verisi Katkıda Bulunan sayfasına bakın. Rol atamaları için kullanılabilir kapsamlar hakkında daha fazla bilgi için bkz. Azure RBAC kapsamını anlama.
Bu senaryoda, En Az Ayrıcalık İlkesi'ni izlemek için depolama hesabı kapsamındaki kullanıcı hesabınıza izinler atayacaksınız. Bu uygulama kullanıcılara yalnızca gereken minimum izinleri verir ve daha güvenli üretim ortamları oluşturur.
Aşağıdaki örnek, depolama hesabınızdaki blob verilerine hem okuma hem de yazma erişimi sağlayan Depolama Blob Verileri Katkıda Bulunanı rolünü kullanıcı hesabınıza atar.
Önemli
Çoğu durumda rol atamasının Azure'a yayılması bir veya iki dakika sürer, ancak nadir durumlarda sekiz dakikaya kadar sürebilir. Kodunuzu ilk kez çalıştırdığınızda kimlik doğrulama hataları alıyorsanız, birkaç dakika bekleyin ve yeniden deneyin.
Azure portalında ana arama çubuğunu veya sol gezintiyi kullanarak depolama hesabınızı bulun.
Depolama hesabına genel bakış sayfasında sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin.
Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.
Üstteki menüden + ekle'yi seçin ve ardından açılan menüden Rol ataması ekle'ü seçin.
Sonuçları istenen role göre filtrelemek için arama kutusunu kullanın. Bu örnek için Depolama Blobu Veri Katkıda Bulunanı'nı arayın ve eşleşen sonucu seçin ve ardından İleri'yi seçin.
Erişim atama altında, Kullanıcı, grup veya hizmet sorumlusu seçeneğini seçin ve ardından + Üyeleri seç seçeneğine tıklayın.
İletişim kutusunda Microsoft Entra kullanıcı adınızı (genellikle user@domain e-posta adresiniz) arayın ve iletişim kutusunun alt kısmındaki Seç'i seçin.
Son sayfaya gitmek için Gözden geçir + ata'yı seçin ve işlemi tamamlamak için Gözden geçir + ata'yı tekrar seçin.
DefaultAzureCredential kullanarak oturum açın ve uygulama kodunuzu Azure'a bağlayın
Aşağıdaki adımları kullanarak depolama hesabınızdaki verilere erişimi yetkileyebilirsiniz:
Depolama hesabınızda rolü atadığınız Microsoft Entra hesabıyla kimliğinizin doğrulanmış olduğundan emin olun. Azure CLI aracılığıyla kimlik doğrulaması yapabilirsiniz. Aşağıdaki komutu kullanarak Azure CLI aracılığıyla Azure'da oturum açın:
az loginkullanmak için
DefaultAzureCredential, azure-identity-cpp paketinin yüklendiğinden ve aşağıdakinin#includeeklendiğinden emin olun.#include <azure/identity/default_azure_credential.hpp>Bu kodu sonuna
main()ekleyin. Kod yerel iş istasyonunuzda çalıştırıldığında,DefaultAzureCredentialAzure'da kimlik doğrulaması yapmak için Azure CLI için geliştirici kimlik bilgilerini kullanır.// Initialize an instance of DefaultAzureCredential auto defaultAzureCredential = std::make_shared<DefaultAzureCredential>(); auto accountURL = "https://<storage-account-name>.blob.core.windows.net"; BlobServiceClient blobServiceClient(accountURL, defaultAzureCredential);Nesnenizin URI'sindeki depolama hesabı adını güncellediğinizden
BlobServiceClientemin olun. Depolama hesabı adı, Azure portalının genel bakış sayfasında bulunabilir.
Uyarı
C++ SDK'sını üretim ortamında kullanırken yalnızca uygulamanızın kullanacağını bildiğiniz kimlik bilgilerini etkinleştirmeniz önerilir.
DefaultAzureCredentialkullanmak yerine, belirli bir kimlik bilgisi türünü veya desteklenen kimlik bilgileriyleChainedTokenCredentialkullanarak yetkilendirmeniz gerekir.
Kapsayıcı oluşturma
Yeni kapsayıcı için bir ad belirleyin. Ardından BlobContainerClient öğesinin bir örneğini oluşturun ve kapsayıcıyı oluşturun.
Önemli
Kapsayıcı adları küçük harfle yazılmalıdır. Kapsayıcıları ve blobları adlandırma hakkında daha fazla bilgi için bkz. Kapsayıcıları, Blobları ve Meta Verileri Adlandırma ve Başvurma.
Bu kodu sonuna main()ekleyin:
std::string containerName = "myblobcontainer";
auto containerClient = blobServiceClient.GetBlobContainerClient("myblobcontainer");
// Create the container if it does not exist
std::cout << "Creating container: " << containerName << std::endl;
containerClient.CreateIfNotExists();
Blobları kapsayıcıya yükleme
Aşağıdaki kod parçacığı:
- "Hello Azure!" içeren bir dize bildirir
- Create a container bölümünden GetBlockBlobClient metodunu çağırarak bir BlockBlobClient nesnesine referans alır.
- UploadFrom işlevini çağırarak dizeyi bloba yükler. Bu işlev, blob mevcut değilse oluşturur veya mevcutsa günceller.
Bu kodu sonuna main()ekleyin:
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));
Kapsayıcıdaki blobları listeleme
ListBlobs işlevini çağırarak kapsayıcıdaki blobları listeleyin. Kapsayıcıya yalnızca bir blob eklendiğinden işlem yalnızca bu blobu döndürür.
Bu kodu sonuna main()ekleyin:
std::cout << "Listing blobs..." << std::endl;
auto listBlobsResponse = containerClient.ListBlobs();
for (auto blobItem : listBlobsResponse.Blobs)
{
std::cout << "Blob name: " << blobItem.Name << std::endl;
}
Blobları indirme
Karşıya yüklenen blobun özelliklerini alın. Ardından, karşıya yüklenen blobun özelliklerini kullanarak yeni std::vector<uint8_t> bir nesne bildirin ve yeniden boyutlandırın.
std::vector<uint8_t> temel sınıfında DownloadTo işlevini çağırarak daha önce oluşturulan blobu yeni nesneye indirin. Son olarak, indirilen blob verilerini görüntüleyin.
Bu kodu sonuna main()ekleyin:
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;
Bir Blob silme
Aşağıdaki kod BlobClient.Delete işlevini çağırarak Blobu Azure Blob Depolama kapsayıcısından siler.
std::cout << "Deleting blob: " << blobName << std::endl;
blobClient.Delete();
Kapsayıcıyı silme
Aşağıdaki kod, BlobContainerClient kullanarak kapsayıcının tamamını silerek uygulamanın oluşturduğu kaynakları temizler .Sil'i seçin.
Bu kodu sonuna main()ekleyin:
std::cout << "Deleting container: " << containerName << std::endl;
containerClient.Delete();
Kodu çalıştır
Bu uygulama bir kapsayıcı oluşturur ve bir metin dosyasını Azure Blob Depolama'ya yükler. Örnek daha sonra kapsayıcıdaki blobları listeler, dosyayı indirir ve dosya içeriğini görüntüler. Son olarak, uygulama blobu ve kapsayıcıyı siler.
Uygulamanın çıkışı aşağıdaki örneğe benzer:
Azure Blob Storage - 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
Sonraki Adımlar
Bu hızlı başlangıçta, C++ kullanarak blobları karşıya yüklemeyi, indirmeyi ve listelemeyi öğrendiniz. Ayrıca Azure Blob Depolama kapsayıcısı oluşturmayı ve silmeyi de öğrendinsiniz.
C++ Blob Depolama örneğini görmek için devam edin: