Share via


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

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

  1. Aşağıdaki içeri aktarma deyimlerini 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ş yordamları çalıştırır ve olay döngüsünü yönetir asyncio . Eş yordamlar zaman uyumsuz/await söz dizimi ile bildirilir. Bu örnekte, main() coroutine önce kullanarak async withen üst düzeyi BlobServiceClient 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öntemi anahtar sözcüğüyle async bildirilir ve await ve set_container_metadata yöntemleri çağrılırken get_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:

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

İstemci kitaplığı kaynakları