Python 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 Python için Azure Depolama istemci kitaplığıyla sistem özelliklerini ve kullanıcı tanımlı meta verileri yönetme işlemi gösterilmektedir.
Zaman uyumsuz API'leri kullanarak özellikleri ve meta verileri yönetme hakkında bilgi edinmek için bkz . Kapsayıcı meta verilerini 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 kapsayıcı özellikleri veya meta verilerle ç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:
Ö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. Arka planda, bazı sistem özellikleri belirli standart HTTP üst bilgilerine karşılık gelir. Python 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öntemi kullanın:
Aşağıdaki kod örneği bir kapsayıcının sistem özelliklerini getirir ve özellik değerlerini bir konsol penceresine yazar:
def get_properties(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
properties = container_client.get_container_properties()
print(f"Public access type: {properties.public_access}")
print(f"Lease status: {properties.lease.status}")
print(f"Lease state: {properties.lease.state}")
print(f"Has immutability policy: {properties.has_immutability_policy}")
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 aşağıdaki yöntemi kullanın:
Kapsayıcı meta verilerinin ayarlanması, kapsayıcıyla ilişkili tüm mevcut meta verilerin üzerine yazılır. Tek bir ad-değer çiftini değiştirmek mümkün değildir.
Aşağıdaki kod örneği bir kapsayıcıda meta verileri ayarlar:
def set_metadata(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
# Retrieve existing metadata, if desired
metadata = container_client.get_container_properties().metadata
more_metadata = {'docType': 'text', 'docCategory': 'reference'}
metadata.update(more_metadata)
# Set metadata on the container
container_client.set_container_metadata(metadata=metadata)
Meta verileri almak için aşağıdaki yöntemi çağırın:
Aşağıdaki örnek meta veri değerlerinde okur:
def get_metadata(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
# Retrieve existing metadata, if desired
metadata = container_client.get_container_properties().metadata
for k, v in metadata.items():
print(k, v)
Kapsayıcı meta verilerini zaman uyumsuz olarak ayarlama
Python için Azure Blob Depolama istemci kitaplığı, kapsayıcı özelliklerini ve meta verileri zaman uyumsuz olarak yönetmeyi destekler. Proje kurulum gereksinimleri hakkında daha fazla bilgi edinmek için bkz . Zaman uyumsuz programlama.
Zaman uyumsuz API'leri kullanarak kapsayıcı meta verilerini 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 önce kullanarakasync with
en üst düzeyiBlobServiceClient
oluşturur, ardından kapsayıcı meta verilerini 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 = ContainerSamples() # 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_metadata(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())
Kapsayıcı meta verilerini ayarlamak için kod ekleyin. Kod, zaman uyumlu örnekle aynıdır, ancak yöntemi anahtar sözcüğüyle
async
bildirilir veawait
veset_container_metadata
yöntemleri çağrılırkenget_container_properties
anahtar sözcüğü kullanılır.async def set_metadata(self, blob_service_client: BlobServiceClient, container_name): container_client = blob_service_client.get_container_client(container=container_name) # Retrieve existing metadata, if desired metadata = (await container_client.get_container_properties()).metadata more_metadata = {'docType': 'text', 'docCategory': 'reference'} metadata.update(more_metadata) # Set metadata on the container await container_client.set_container_metadata(metadata=metadata)
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 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
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. Özellikleri ve meta verileri ayarlamak ve almak için istemci kitaplığı yöntemleri aşağıdaki REST API işlemlerini kullanır:
- Kapsayıcı Özelliklerini Alma (REST API)
- Kapsayıcı Meta Verilerini Ayarlama (REST API)
- Kapsayıcı Meta Verilerini Alma (REST API)
yöntemi hem get_container_properties
Kapsayıcı Özelliklerini Al işlemini hem de Kapsayıcı Meta Verilerini Al işlemini çağırarak kapsayıcı özelliklerini ve meta verilerini alır.
Kod örnekleri
- Bu makaledeki (GitHub) zaman uyumlu veya zaman uyumsuz kod örneklerini görüntüleyin