Python ile blob kapsayıcısı oluşturma

Azure Depolama'deki bloblar kapsayıcılar halinde düzenlenir. Blobu karşıya yükleyebilmeniz için önce bir kapsayıcı oluşturmanız gerekir. Bu makalede Python için Azure Depolama istemci kitaplığıyla kapsayıcı oluşturma adımları gösterilmektedir.

Zaman uyumsuz API'leri kullanarak blob kapsayıcıları oluşturma hakkında bilgi edinmek için bkz . Zaman uyumsuz olarak kapsayıcı oluşturma.

Ö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 kapsayıcısı oluşturma izinleri olmalıdır. Daha fazla bilgi edinmek için aşağıdaki REST API işlemi için yetkilendirme kılavuzuna bakın:

Kapsayıcı adlandırma hakkında

Kapsayıcı adı, kapsayıcıyı veya bloblarını ele almak için kullanılan benzersiz URI'nin bir parçasını oluşturacağı için geçerli bir DNS adı olmalıdır. Kapsayıcıyı adlandırırken şu kuralları izleyin:

  • Kapsayıcı adları 3 ila 63 karakter uzunluğunda olabilir.
  • Kapsayıcı adları bir harf veya sayı ile başlamalıdır ve yalnızca küçük harf, sayı ve tire (-) karakteri içerebilir.
  • Kapsayıcı adlarında ardışık tire karakterlerine izin verilmez.

Kapsayıcı kaynağının URI'si aşağıdaki gibi biçimlendirilir:

https://my-account-name.blob.core.windows.net/my-container-name

Kapsayıcı oluşturma

Kapsayıcı oluşturmak için BlobServiceClient sınıfından aşağıdaki yöntemi çağırın:

ContainerClient sınıfından aşağıdaki yöntemi kullanarak da bir kapsayıcı oluşturabilirsiniz:

Kapsayıcılar depolama hesabının hemen altında oluşturulur. Bir kapsayıcıyı başka bir kapsayıcının altına iç içe yerleştirmek mümkün değildir. Aynı ada sahip bir kapsayıcı zaten varsa bir özel durum oluşturulur.

Aşağıdaki örnek bir nesneden kapsayıcı BlobServiceClient oluşturur:

def create_blob_container(self, blob_service_client: BlobServiceClient, container_name):
    try:
        container_client = blob_service_client.create_container(name=container_name)
    except ResourceExistsError:
        print('A container with this name already exists')

Kök kapsayıcıyı oluşturma

Kök kapsayıcı, depolama hesabınız için varsayılan kapsayıcı görevi görür. Her depolama hesabının $root olarak adlandırılması gereken bir kök kapsayıcısı olabilir. Kök kapsayıcı açıkça oluşturulmalıdır veya silinmelidir.

Kök kapsayıcı adını eklemeden kök kapsayıcıda depolanan bir bloba başvurabilirsiniz. Kök kapsayıcı, depolama hesabı hiyerarşisinin en üst düzeyinde bir bloba başvurmanızı sağlar. Örneğin, kök kapsayıcıdaki bir bloba aşağıdaki gibi başvurabilirsiniz:

https://accountname.blob.core.windows.net/default.html

Aşağıdaki örnek, $root kapsayıcı adıyla yeni ContainerClient bir nesne oluşturur ve depolama hesabında henüz yoksa kapsayıcıyı oluşturur:

def create_blob_root_container(self, blob_service_client: BlobServiceClient):
    container_client = blob_service_client.get_container_client(container="$root")

    # Create the root container if it doesn't already exist
    if not container_client.exists():
        container_client.create_container()

Zaman uyumsuz olarak kapsayıcı oluşturma

Python için Azure Blob Depolama istemci kitaplığı, zaman uyumsuz bir blob kapsayıcısı oluşturmayı destekler. Proje kurulum gereksinimleri hakkında daha fazla bilgi edinmek için bkz . Zaman uyumsuz programlama.

Zaman uyumsuz API'leri kullanarak kapsayıcı oluşturmak 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
    from azure.core.exceptions import ResourceExistsError
    
  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ıyı oluşturan 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.create_blob_container(blob_service_client, "sample-container")
    
    if __name__ == '__main__':
        asyncio.run(main())
    
  3. Kapsayıcı oluşturmak için kod ekleyin. Kod, zaman uyumlu örnekle aynıdır, ancak yöntemi anahtar sözcüğüyle async bildirilir ve await yöntemi çağrılırken create_container anahtar sözcüğü kullanılır.

    async def create_blob_container(self, blob_service_client: BlobServiceClient, container_name):
        try:
            container_client = await blob_service_client.create_container(name=container_name)
        except ResourceExistsError:
            print('A container with this name already exists')
    

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ı oluşturma 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. Kapsayıcı oluşturmaya yönelik istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:

Kod örnekleri

İstemci kitaplığı kaynakları