Aracılığıyla paylaş


.NET ile kapsayıcı özelliklerini ve meta verilerini yönetme

Blob kapsayıcıları, içerdikleri verilere ek olarak sistem özelliklerini ve kullanıcı tanımlı meta verileri destekler. Bu makalede, .NET için Azure Depolama istemci kitaplığı ile sistem özelliklerini ve kullanıcı tanımlı meta verilerin nasıl yönetileceğini gösterir.

Ö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ı, kapsayıcı özellikleri veya meta verilerle çalışmak için gerekli izinlere sahip olmalıdır. Microsoft Entra Id ile yetkilendirme için (önerilir), alma işlemleri için Azure RBAC yerleşik rolü Depolama Blob Veri Okuyucusu veya üzeri, ayarlanan işlemler için depolama blobu veri katkıda bulunanı veya üzeri gerekir. Daha fazla bilgi edinmek için Bkz. Kapsayıcı Özelliklerini Alma (REST API), Kapsayıcı Meta Verilerini Ayarlama (REST API) veya Kapsayıcı Meta Verilerini Alma (REST API)için yetkilendirme kılavuzu.

Özellikler ve meta veriler hakkında

  • Sistem özellikleri: Her Blob depolama kaynağında sistem özellikleri vardır. Bazıları okunabilir veya ayarlanabilirken, bazıları salt okunurdur. Bazı sistem özellikleri, kapakların altında belirli standart HTTP üst bilgilerine karşılık gelir. .NET için Azure Depolama istemci kitaplığı bu özellikleri sizin için korur.

  • Kullanıcı tanımlı meta veriler: Kullanıcı tanımlı meta veriler, Blob depolama kaynağı için belirttiğiniz bir veya daha fazla ad-değer çiftini içerir. Kaynakla birlikte ek değerleri depolamak için meta verileri kullanabilirsiniz. Meta veri değerleri yalnızca sizin amaçlarınıza yöneliktir ve kaynağın davranışını etkilemez.

    Meta veri adı/değer çiftleri geçerli HTTP üst bilgileridir ve HTTP üst bilgilerini yöneten tüm kısıtlamalara uymalıdır. Meta veri adlandırma gereksinimleri hakkında daha fazla bilgi için bkz . Meta veri adları.

Kapsayıcı özelliklerini alma

Kapsayıcı özelliklerini almak için aşağıdaki yöntemlerden birini çağırın:

Aşağıdaki kod örneği bir kapsayıcının sistem özelliklerini getirir ve konsol penceresine bazı özellik değerleri yazar:

private static async Task ReadContainerPropertiesAsync(BlobContainerClient container)
{
    try
    {
        // Fetch some container properties and write out their values.
        var properties = await container.GetPropertiesAsync();
        Console.WriteLine($"Properties for container {container.Uri}");
        Console.WriteLine($"Public access level: {properties.Value.PublicAccess}");
        Console.WriteLine($"Last modified time in UTC: {properties.Value.LastModified}");
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

Meta verileri ayarlama ve alma

Meta verileri bir blob veya kapsayıcı kaynağında bir veya daha fazla ad-değer çifti olarak belirtebilirsiniz. Meta verileri ayarlamak için, bir IDictionary nesnesine ad-değer çiftleri ekleyin ve değerleri yazmak için aşağıdaki yöntemlerden birini çağırın:

Aşağıdaki kod örneği bir kapsayıcıda meta verileri ayarlar.

public static async Task AddContainerMetadataAsync(BlobContainerClient container)
{
    try
    {
        IDictionary<string, string> metadata =
           new Dictionary<string, string>();

        // Add some metadata to the container.
        metadata.Add("docType", "textDocuments");
        metadata.Add("category", "guidance");

        // Set the container's metadata.
        await container.SetMetadataAsync(metadata);
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

Meta verileri almak için aşağıdaki yöntemlerden birini çağırın:

Ardından, aşağıdaki örnekte gösterildiği gibi değerleri okuyun.

public static async Task ReadContainerMetadataAsync(BlobContainerClient container)
{
    try
    {
        var properties = await container.GetPropertiesAsync();

        // Enumerate the container's metadata.
        Console.WriteLine("Container metadata:");
        foreach (var metadataItem in properties.Value.Metadata)
        {
            Console.WriteLine($"\tKey: {metadataItem.Key}");
            Console.WriteLine($"\tValue: {metadataItem.Value}");
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

Kaynaklar

.NET için Azure Blob Depolama istemci kitaplığını kullanarak kapsayıcı özelliklerini ve meta verilerini ayarlama ve alma 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. Özellikleri ve meta verileri ayarlamak ve almak için istemci kitaplığı yöntemleri aşağıdaki REST API işlemlerini kullanır:

ve yöntemleri, GetProperties hem Blob Özelliklerini Al işlemini hem de Blob Meta Verilerini Al işlemini çağırarak kapsayıcı özelliklerini ve meta verileri GetPropertiesAsync alır.

İstemci kitaplığı kaynakları