Python ile verileri yönetmek ve bulmak için blob dizini etiketlerini kullanma
Bu makalede, Python için Azure Depolama istemci kitaplığını kullanarak verileri yönetmek ve bulmak için blob dizin etiketlerinin nasıl kullanılacağı gösterilmektedir.
Zaman uyumsuz API'leri kullanarak blob dizin etiketlerini ayarlama hakkında bilgi edinmek için bkz . Blob dizini etiketlerini zaman uyumsuz olarak ayarlama.
Önkoşullar
- Bu makalede, Python için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere ayarlanmış bir projeniz olduğu varsayılır. Paket yükleme, deyim ekleme
import
ve yetkili istemci nesnesi oluşturma dahil olmak üzere projenizi ayarlama hakkında bilgi edinmek için bkz. Azure Blob Depolama ve Python'ı kullanmaya başlama. - Yetkilendirme mekanizmasının blob dizin etiketleriyle çalışma izinleri olmalıdır. Daha fazla bilgi edinmek için aşağıdaki REST API işlemleri için 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.Depolama ile bir Azure RBAC rolü atanmış güvenlik sorumlusu/storageAccounts/blobServices/containers/blobs/tags/write action. Depolama Blob 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öntemi kullanabilirsiniz:
Bu yöntemde belirtilen etiketler mevcut etiketlerin yerini alır. Eski değerlerin korunması gerekiyorsa, bunlar indirilmeli ve bu yöntem çağrısına dahil edilmelidir. Aşağıdaki örnekte etiketlerin nasıl ayarlanacağı gösterilmektedir:
def set_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Get any existing tags for the blob if they need to be preserved
tags = blob_client.get_blob_tags()
# Add or modify tags
updated_tags = {'Sealed': 'false', 'Content': 'image', 'Date': '2022-01-01'}
tags.update(updated_tags)
blob_client.set_blob_tags(tags)
Yöntemine set_blob_tags
boş dict
bir nesne geçirerek tüm etiketleri silebilirsiniz:
def clear_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Pass in empty dict object to clear tags
tags = dict()
blob_client.set_blob_tags(tags)
Etiketleri alma
Kodunuz aşağıdaki mekanizmalardan biri aracılığıyla blob verilerine yetkilendirilmiş erişime sahipse dizin etiketlerini alabilirsiniz:
- Microsoft.Depolama ile bir Azure RBAC rolü atanmış güvenlik sorumlusu/storageAccounts/blobServices/containers/blobs/tags/read eylemi. Depolama Blob 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.
Etiketleri almak için aşağıdaki yöntemi kullanabilirsiniz:
Aşağıdaki örnekte blobun etiketlerini alma ve yineleme adımları gösterilmektedir:
def get_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
tags = blob_client.get_blob_tags()
print("Blob tags: ")
for k, v in tags.items():
print(k, v)
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.Depolama ile bir Azure RBAC rolü atanmış güvenlik sorumlusu/storageAccounts/blobServices/containers/blobs/filter/action eylemi. Depolama Blob 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öntemi kullanarak verileri bulabilirsiniz:
Aşağıdaki örnek, görüntü olarak etiketlenen tüm blobları bulur ve listeler:
def find_blobs_by_tags(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
query = "\"Content\"='image'"
blob_list = container_client.find_blobs_by_tags(filter_expression=query)
print("Blobs tagged as images")
for blob in blob_list:
print(blob.name)
Blob dizini etiketlerini zaman uyumsuz olarak ayarlama
Python için Azure Blob Depolama istemci kitaplığı, blob dizin etiketleriyle zaman uyumsuz olarak çalışmayı destekler. Proje kurulum gereksinimleri hakkında daha fazla bilgi edinmek için bkz . Zaman uyumsuz programlama.
Zaman uyumsuz API'leri kullanarak blob dizini etiketlerini ayarlamak için şu adımları izleyin:
Aşağıdaki içeri aktarma deyimlerini ekleyin:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
kullanarak
asyncio.run
programı çalıştırmak için kod ekleyin. Bu işlev,main()
örneğimizde geçirilen eş yordamları çalıştırır ve olay döngüsünü yönetirasyncio
. Eş yordamlar zaman uyumsuz/await söz dizimi ile bildirilir. Bu örnekte,main()
coroutine ilk olarak kullanarakasync with
en üst düzeyiBlobServiceClient
oluşturur ve ardından blob dizin etiketlerini ayarlayan yöntemi çağırır. Yalnızca en üst düzey istemcinin kullanmasıasync with
gerektiğini unutmayın; bu istemciden oluşturulan diğer istemciler aynı bağlantı havuzunu paylaşır.async def main(): sample = BlobSamples() # TODO: Replace <storage-account-name> with your actual storage account name account_url = "https://<storage-account-name>.blob.core.windows.net" credential = DefaultAzureCredential() async with BlobServiceClient(account_url, credential=credential) as blob_service_client: await sample.set_blob_tags(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())
Blob dizini etiketlerini ayarlamak için kod ekleyin. Kod, zaman uyumlu örnekle aynıdır, ancak yöntemi anahtar sözcüğüyle
async
bildirilir veawait
veset_blob_tags
yöntemleri çağrılırkenget_blob_tags
anahtar sözcüğü kullanılır.async def set_blob_tags(self, blob_service_client: BlobServiceClient, container_name): blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt") # Get any existing tags for the blob if they need to be preserved tags = await blob_client.get_blob_tags() # Add or modify tags updated_tags = {'Sealed': 'false', 'Content': 'image', 'Date': '2022-01-01'} tags.update(updated_tags) await blob_client.set_blob_tags(tags)
Bu temel kurulumla, bu makaledeki diğer örnekleri zaman uyumsuz/await söz dizimini kullanarak eş yordam olarak uygulayabilirsiniz.
Kaynaklar
Python 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
Python için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık Python 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)
Kod örnekleri
- Bu makaledeki (GitHub) zaman uyumlu veya zaman uyumsuz kod örneklerini görüntüleyin
İstemci kitaplığı kaynakları
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