Aracılığıyla paylaş


.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

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 Cooliç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 Standardolarak 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 Standardolarak 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:

İstemci kitaplığı kaynakları

Kod örnekleri

Ayrıca bkz.