.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
- 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 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:
- Blob Etiketlerini Alma (REST API)
- Blob Etiketlerini Ayarlama (REST API)
- Blobları Etiketlere Göre Bulma (REST API)
İstemci kitaplığı kaynakları
Ayrıca bkz.
- Blob dizini etiketleriyle Azure Blob verilerini yönetme ve bulma
- Azure Blob Depolama verileri yönetmek ve bulmak için blob dizini etiketlerini kullanma
İlgili içerik
- 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.