.NET ile blok blobu erişim katmanını ayarlama veya değiştirme
Bu makalede, .NET için Azure Depolama istemci kitaplığını kullanarak blok blobu için erişim katmanını ayarlama veya değiştirme adımları gösterilmektedir.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- İşletim sisteminiz için en son .NET SDK'sı . Çalışma zamanını değil SDK'yi aldığınızdan emin olun.
Ortamınızı ayarlama
Var olan bir projeniz yoksa, bu bölümde bir projenin .NET için Azure Blob Depolama istemci kitaplığıyla çalışacak şekilde nasıl ayarlanacağı gösterilir. Adımlar arasında paket yükleme, yönergeler ekleme using
ve yetkili istemci nesnesi oluşturma yer alır. Ayrıntılar için bkz. Azure Blob Depolama ve .NET'i kullanmaya başlama.
Paketleri yükleme
Proje dizininizden komutunu kullanarak dotnet add package
Azure Blob Depolama ve Azure Identity istemci kitaplıkları için paketleri yükleyin. Azure hizmetlerine parolasız bağlantılar için Azure.Identity paketi gereklidir.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Yönerge ekleme using
Kod dosyanızın en üstüne şu using
yönergeleri ekleyin:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Bu makaledeki bazı kod örnekleri için ek using
yönergeler gerekebilir.
İstemci nesnesi oluşturma
Bir uygulamayı Blob Depolama'ya bağlamak için bir BlobServiceClient örneği oluşturun. Aşağıdaki örnekte yetkilendirme için kullanarak DefaultAzureCredential
bir istemci nesnesinin nasıl oluşturulacağı gösterilmektedir:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Bir .NET uygulamasına bağımlılık ekleme için bir hizmet istemcisi kaydedebilirsiniz.
Ayrıca, belirli kapsayıcılar veya bloblar için istemci nesneleri de oluşturabilirsiniz. İstemci nesneleri oluşturma ve yönetme hakkında daha fazla bilgi edinmek için bkz . Veri kaynaklarıyla etkileşim kuran istemci nesneleri oluşturma ve yönetme.
Yetkilendirme
Yetkilendirme mekanizması, blob erişim katmanını ayarlamak için gerekli izinlere sahip olmalıdır. Microsoft Entra Id ile yetkilendirme için (önerilir), Azure RBAC yerleşik rolü Depolama Blob Verileri Katkıda Bulunanı veya üzeri gerekir. Daha fazla bilgi edinmek için Bkz. Blob Katmanını Ayarlama için yetkilendirme kılavuzu.
Blok blobu erişim katmanları hakkında
Depolama gereksinimlerinin maliyetlerini yönetmek için verilerinizi ne sıklıkta erişildiğinden ve ne kadar süreyle saklanması gerektiğinden yola çıkarak düzenlemek yararlı olabilir. Azure depolama, blob verilerinizi nasıl kullanıldığına göre en uygun maliyetli şekilde depolayabileceğiniz farklı erişim katmanları sunar.
Blob verileri için erişim katmanları
Azure Depolama erişim katmanları şunlardır:
- Sık erişim katmanı - Sık erişilen veya değiştirilen verileri depolamak için iyileştirilmiş bir çevrimiçi katman. Sık erişim katmanı en yüksek depolama maliyetlerine, ancak en düşük erişim maliyetlerine sahiptir.
- Seyrek erişim katmanı - Seyrek erişilen veya değiştirilen verileri depolamak için iyileştirilmiş çevrimiçi katman. Seyrek erişim katmanındaki veriler en az 30 gün boyunca depolanmalıdır. Seyrek erişim katmanı, sık erişim katmanına kıyasla daha düşük depolama maliyetlerine ve daha yüksek erişim maliyetlerine sahiptir.
- Soğuk katman - Seyrek erişilen veya değiştirilen verileri depolamak için iyileştirilmiş çevrimiçi katman. Soğuk katmandaki veriler en az 90 gün saklanmalıdır. Soğuk katman, seyrek erişim katmanına kıyasla depolama açısından daha düşük, erişim açısından daha yüksek maliyetlidir.
- Arşiv katmanı - Seyrek erişilen ve esnek gecikme süresi gereksinimlerine sahip verileri saat sırasına göre depolamak için iyileştirilmiş çevrimdışı katman. Arşiv katmanındaki veriler en az 180 gün boyunca depolanmalıdır.
Erişim katmanları hakkında daha fazla bilgi edinmek için bkz . Blob verileri için erişim katmanları.
Blob Arşiv erişim katmanındayken çevrimdışı olduğu kabul edilir ve okunamaz veya değiştirilemez. Arşivlenmiş bir blobdaki verileri okumak veya değiştirmek için önce blobu çevrimiçi bir katmanda yeniden doldurmanız gerekir. Bir blobu Arşiv katmanından çevrimiçi katmana yeniden doldurma hakkında daha fazla bilgi edinmek için bkz . Arşiv katmanından blob yeniden doldurma.
Kısıtlamalar
Erişim katmanının ayarlanmasına yalnızca blok bloblarında izin verilir. Blok blobu erişim katmanını ayarlama kısıtlamaları hakkında daha fazla bilgi edinmek için bkz . Blob Katmanını Ayarlama (REST API).
Not
Erişim katmanını .NET kullanacak şekilde ayarlamak için Cold
en düşük istemci kitaplığı sürümü olan 12.15.0 kullanmanız gerekir.
Karşıya yükleme sırasında blob'un erişim katmanını ayarlama
BlobUploadOptions sınıfını kullanarak karşıya yüklemede blob'un erişim katmanını ayarlayabilirsiniz. Aşağıdaki kod örneğinde blob karşıya yüklenirken erişim katmanının nasıl ayarlanacağı gösterilmektedir:
public static async Task UploadWithAccessTierAsync(
BlobContainerClient containerClient,
string localFilePath)
{
string fileName = Path.GetFileName(localFilePath);
BlockBlobClient blockBlobClient = containerClient.GetBlockBlobClient(fileName);
var uploadOptions = new BlobUploadOptions()
{
AccessTier = AccessTier.Cool
};
FileStream fileStream = File.OpenRead(localFilePath);
await blockBlobClient.UploadAsync(fileStream, uploadOptions);
fileStream.Close();
}
.NET ile blob yükleme hakkında daha fazla bilgi edinmek için bkz . .NET ile blob yükleme.
Mevcut blok blobunun erişim katmanını değiştirme
Aşağıdaki işlevlerden birini kullanarak mevcut blok blobunun erişim katmanını değiştirebilirsiniz:
Aşağıdaki kod örneğinde, mevcut blob Cool
için erişim katmanının olarak nasıl değiştireceği gösterilmektedir:
public static async Task ChangeBlobAccessTierAsync(
BlobClient blobClient)
{
// Change the access tier of the blob to cool
await blobClient.SetAccessTierAsync(AccessTier.Cool);
}
Arşivlenmiş bir blobu yeniden doldurmaya devam ediyorsanız, isteğe bağlı olarak parametresini rehydratePriority
veya Standard
olarak High
ayarlayabilirsiniz.
Blobu farklı bir erişim katmanına kopyalama
Kopyalama işleminin bir parçası olarak bir erişim katmanı belirterek mevcut bir blok blobunun erişim katmanını değiştirebilirsiniz. Kopyalama işlemi sırasında erişim katmanını değiştirmek için BlobCopyFromUriOptions sınıfını kullanın ve AccessTier özelliğini belirtin. Bir kopyalama işlemi kullanarak arşiv katmanından bir blobu yeniden doldurmaya devam ediyorsanız, isteğe bağlı olarak RehydratePriority özelliğini veya Standard
olarak High
ayarlayabilirsiniz.
Aşağıdaki kod örneği, bir kopyalama işlemi kullanarak arşivlenmiş blobu katmana yeniden doldurma işlemini Hot
gösterir:
public static async Task RehydrateBlobUsingCopyAsync(
BlobClient sourceArchiveBlob,
BlobClient destinationRehydratedBlob)
{
// Note: the destination blob must have a different name than the archived source blob
// Configure copy options to specify hot tier and standard priority
BlobCopyFromUriOptions copyOptions = new()
{
AccessTier = AccessTier.Hot,
RehydratePriority = RehydratePriority.Standard
};
// Copy source blob from archive tier to destination blob in hot tier
CopyFromUriOperation copyOperation = await destinationRehydratedBlob
.StartCopyFromUriAsync(sourceArchiveBlob.Uri, copyOptions);
await copyOperation.WaitForCompletionAsync();
}
.NET ile blob kopyalama hakkında daha fazla bilgi edinmek için bkz . .NET ile blob kopyalama.
Kaynaklar
.NET için Azure Blob Depolama istemci kitaplığını kullanarak erişim katmanlarını ayarlama hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.
REST API işlemleri
.NET için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık .NET paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlar. Erişim katmanlarını ayarlamak için istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:
- Blob Katmanını Ayarlama (REST API)
İstemci kitaplığı kaynakları
Kod örnekleri
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin