Aracılığıyla paylaş


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ığı ile sistem özelliklerinin ve kullanıcı tanımlı meta verilerin nasıl yönetileceğini 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

Ortamınızı ayarlama

Mevcut bir projeniz yoksa, bu bölümde Python için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere bir projenin nasıl ayarlanacağı gösterilir. Diğer ayrıntılar için bkz. Azure Blob Depolama ve Python'ı kullanmaya başlama.

Bu makaledeki kod örnekleriyle çalışmak için projenizi ayarlamak için bu adımları izleyin.

Paketleri yükleme

kullanarak pip installaşağıdaki paketleri yükleyin:

pip install azure-storage-blob azure-identity

Import ifadeleri ekle

Aşağıdaki import deyimlerini ekleyin:

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

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 üstü, ve ayarlama işlemleri için Depolama Blob Veri Katkıda Bulunanı veya üstü 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.

İ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:

# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()

# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential=credential)

Ayrıca, belirli kapsayıcılar veya bloblar için, doğrudan veya BlobServiceClient nesnesinden istemci nesneleri 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.

Özellikler ve meta veriler hakkında

  • Sistem özellikleri: Sistem özellikleri her Blob Depolama kaynağında bulunur. Bazıları okunabilir veya ayarlanabilir, bazıları ise yalnızca okunabilir. 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ğerlerini 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 şekilde ayarla

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:

  1. Aşağıdaki import ifadelerini ekleyin:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    
  2. kullanarak asyncio.runprogramı çalıştırmak için kod ekleyin. Bu işlev, main() örneğimizde geçirilen eş yordamı çalıştırır ve asyncio olay döngüsünü yönetir. Coroutine'ler async/await söz dizimi ile bildirilir. Bu örnekte, main() coroutine önce BlobServiceClient kullanarak async with üst düzeyi oluşturur, ardından kapsayıcı meta verilerini ayarlayan yöntemi çağırır. Yalnızca en üst düzey istemcinin kullanması async withgerektiğ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())
    
  3. Kapsayıcı meta verilerini ayarlamak için kod ekleyin. Kod, zaman uyumlu örnekle aynıdır, ancak yöntem async anahtar sözcüğüyle bildirilir ve await ve get_container_properties yöntemleri çağrılırken set_container_metadata 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 async/await sözdizimini kullanarak eşzamanlı yordamlar 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.

Kod örnekleri

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:

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.

Müşteri kitaplığı kaynakları

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