Aracılığıyla paylaş


.NET ile verileri yönetmek ve bulmak için blob dizini etiketlerini kullanma

Bu makalede, .NET için Azure Depolama istemci kitaplığını kullanarak verileri yönetmek ve bulmak için blob dizin etiketlerinin nasıl kullanılacağı 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 dizin etiketleriyle çalışmak için gerekli izinlere sahip olmalıdır. Microsoft Entra Id ile yetkilendirme için (önerilen), Azure RBAC yerleşik rol Depolama Blob Veri Sahibi veya üzeri gerekir. Daha fazla bilgi edinmek için Blob Etiketlerini Alma (REST API), Blob Etiketlerini Ayarlama (REST API) veya Blobları Etiketlere Göre Bul (REST API) yetkilendirme kılavuzuna bakın.

Blob dizini etiketleri hakkında

Blob dizin etiketleri, anahtar-değer etiketi özniteliklerini kullanarak depolama hesabınızdaki verileri kategorilere ayırır. Bu etiketler otomatik olarak dizinlenir ve verileri kolayca bulmak için aranabilir çok boyutlu bir dizin olarak kullanıma sunulur. Bu makalede blob dizin etiketlerini kullanarak verileri ayarlama, alma ve bulma adımları gösterilmektedir.

Hiyerarşik ad alanı etkinleştirilmiş depolama hesapları için blob dizin etiketleri desteklenmez. Blob dizini etiketi özelliği ve bilinen sorunlar ve sınırlamalar hakkında daha fazla bilgi edinmek için bkz . Blob dizini etiketleriyle Azure Blob verilerini yönetme ve bulma.

Etiketleri ayarlama

Kodunuzun blob verilerine erişim yetkisi varsa dizin etiketlerini aşağıdaki mekanizmalardan biriyle ayarlayabilirsiniz:

  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write eylemiyle bir Azure RBAC rolü atanan güvenlik sorumlusu. Depolama Blobu Veri Sahibi, bu eylemi içeren yerleşik bir roldür.
  • Blob etiketlerine erişme izni olan Paylaşılan Erişim İmzası (SAS) (t izin)
  • Hesap anahtarı

Daha fazla bilgi için bkz . Blob dizini etiketlerini ayarlama.

Etiketleri ayarlamak için aşağıdaki yöntemlerden birini kullanabilirsiniz:

Aşağıdaki örnek bu görevi gerçekleştirir.

public static async Task SetTags(BlobClient blobClient)
{
    Dictionary<string, string> tags = 
        new Dictionary<string, string>
    {
        { "Sealed", "false" },
        { "Content", "image" },
        { "Date", "2020-04-20" }
    };

    await blobClient.SetTagsAsync(tags);
}

Aşağıdaki örnekte gösterildiği gibi SetTags veya SetTagsAsync yöntemine boş bir [Sözlük] geçirerek tüm etiketleri silebilirsiniz.

Dictionary<string, string> noTags = new Dictionary<string, string>();
await blobClient.SetTagsAsync(noTags);
İlgili makaleler
Blob dizini etiketleriyle Azure Blob verilerini yönetme ve bulma
Blob Etiketlerini Ayarlama (REST API)

Etiketleri alma

Kodunuz aşağıdaki mekanizmalardan biri aracılığıyla blob verilerine yetkilendirilmiş erişime sahipse dizin etiketlerini alabilirsiniz:

  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read eylemiyle bir Azure RBAC rolü atanan güvenlik sorumlusu. Depolama Blobu Veri Sahibi, bu eylemi içeren yerleşik bir roldür.
  • Blob etiketlerine erişme izni olan Paylaşılan Erişim İmzası (SAS) (t izin)
  • Hesap anahtarı

Daha fazla bilgi için bkz . Blob dizini etiketlerini alma ve listeleme.

Aşağıdaki yöntemlerden birini kullanarak etiketleri alabilirsiniz:

Aşağıdaki örnek bu görevi gerçekleştirir.

public static async Task GetTags(BlobClient blobClient)
{
    Response<GetBlobTagResult> tagsResponse = await blobClient.GetTagsAsync();

    foreach (KeyValuePair<string, string> tag in tagsResponse.Value.Tags)
    {
        Console.WriteLine($"{tag.Key}={tag.Value}");
    }
}

Blob dizini etiketleriyle verileri filtreleme ve bulma

Kodunuz aşağıdaki mekanizmalardan biri aracılığıyla blob verilerine erişim yetkisine sahipse verileri bulmak ve filtrelemek için dizin etiketlerini kullanabilirsiniz:

  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action eylemiyle bir Azure RBAC rolü atanan güvenlik sorumlusu. Depolama Blobu Veri Sahibi, bu eylemi içeren yerleşik bir roldür.
  • Blobları etiketlere göre filtreleme iznine sahip Paylaşılan Erişim İmzası (SAS) (f izin)
  • Hesap anahtarı

Daha fazla bilgi için bkz . Blob dizini etiketlerini kullanarak veri bulma.

Not

Önceki sürümleri almak için dizin etiketlerini kullanamazsınız. Önceki sürümlerin etiketleri blob dizin altyapısına geçirilmiyor. Daha fazla bilgi için bkz . Koşullar ve bilinen sorunlar.

Aşağıdaki yöntemlerden birini kullanarak verileri bulabilirsiniz:

Aşağıdaki örnek, belirli bir aralık arasında kalan bir tarihle etiketlenmiş tüm blobları bulur.

public static async Task FindBlobsbyTags(BlobServiceClient serviceClient)
{
    string query = @"""Date"" >= '2020-04-20' AND ""Date"" <= '2020-04-30'";

    // Find Blobs given a tags query
    Console.WriteLine("Find Blob by Tags query: " + query + Environment.NewLine);

    List<TaggedBlobItem> blobs = new List<TaggedBlobItem>();
    await foreach (TaggedBlobItem taggedBlobItem in serviceClient.FindBlobsByTagsAsync(query))
    {
        blobs.Add(taggedBlobItem);
    }

    foreach (var filteredBlob in blobs)
    {
        
        Console.WriteLine($"BlobIndex result: ContainerName= {filteredBlob.BlobContainerName}, " +
            $"BlobName= {filteredBlob.BlobName}");
    }

}

Kaynaklar

.NET için Azure Blob Depolama istemci kitaplığını kullanarak verileri yönetmek ve bulmak için dizin etiketlerini kullanma 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. Blob dizin etiketlerini yönetmek ve kullanmak için istemci kitaplığı yöntemleri aşağıdaki REST API işlemlerini kullanır:

İstemci kitaplığı kaynakları

Ayrıca bkz.

  • Bu makale, .NET için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için .NET uygulamanızı derleme makalelerinde geliştirici kılavuzu makalelerinin tam listesine bakın.