Sdílet prostřednictvím


Vytvoření kontejneru objektů blob pomocí Pythonu

Objekty blob ve službě Azure Storage jsou uspořádané do kontejnerů. Než budete moct nahrát objekt blob, musíte nejprve vytvořit kontejner. Tento článek ukazuje, jak vytvořit kontejnery s klientskou knihovnou Azure Storage pro Python.

Další informace o vytváření kontejnerů objektů blob pomocí asynchronních rozhraní API najdete v tématu Vytvoření kontejneru asynchronně.

Požadavky

  • Tento článek předpokládá, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou služby Azure Blob Storage pro Python. Další informace o nastavení projektu, včetně instalace balíčku, přidání import příkazů a vytvoření autorizovaného klientského objektu, najdete v tématu Začínáme se službou Azure Blob Storage a Pythonem.
  • Autorizační mechanismus musí mít oprávnění k vytvoření kontejneru objektů blob. Další informace najdete v pokynech k autorizaci pro následující operaci rozhraní REST API:

Pojmenování kontejneru

Název kontejneru musí být platný název DNS, protože je součástí jedinečného identifikátoru URI použitého k adresování kontejneru nebo jeho objektů blob. Při pojmenování kontejneru postupujte podle těchto pravidel:

  • Názvy kontejnerů můžou mít délku 3 až 63 znaků.
  • Názvy kontejnerů musí začínat písmenem nebo číslicí a mohou obsahovat pouze malá písmena, číslice a znak pomlčky (-).
  • V názvech kontejnerů nejsou povolené po sobě jdoucí pomlčky.

Identifikátor URI pro prostředek kontejneru je formátovaný takto:

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

Vytvoření kontejneru

Pokud chcete vytvořit kontejner, zavolejte z třídy BlobServiceClient následující metodu:

Kontejner můžete také vytvořit pomocí následující metody z třídy ContainerClient :

Kontejnery se vytvářejí okamžitě pod účtem úložiště. Není možné vnořit jeden kontejner pod jiný. Pokud kontejner se stejným názvem již existuje, vyvolá se výjimka.

Následující příklad vytvoří kontejner z objektu BlobServiceClient :

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')

Vytvoření kořenového kontejneru

Kořenový kontejner slouží jako výchozí kontejner pro váš účet úložiště. Každý účet úložiště může mít jeden kořenový kontejner, který musí mít název $root. Kořenový kontejner musí být explicitně vytvořen nebo odstraněn.

Na objekt blob uložený v kořenovém kontejneru můžete odkazovat bez zahrnutí názvu kořenového kontejneru. Kořenový kontejner umožňuje odkazovat na objekt blob na nejvyšší úrovni hierarchie účtu úložiště. Například můžete odkazovat na objekt blob v kořenovém kontejneru následujícím způsobem:

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

Následující příklad vytvoří nový ContainerClient objekt s názvem kontejneru $root a pak vytvoří kontejner, pokud ještě v účtu úložiště neexistuje:

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()

Asynchronní vytvoření kontejneru

Klientská knihovna Azure Blob Storage pro Python podporuje asynchronní vytváření kontejneru objektů blob. Další informace o požadavcích na nastavení projektu najdete v tématu Asynchronní programování.

Pomocí následujících kroků vytvořte kontejner pomocí asynchronních rozhraní API:

  1. Přidejte následující příkazy importu:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    from azure.core.exceptions import ResourceExistsError
    
  2. Přidejte kód pro spuštění programu pomocí asyncio.run. Tato funkce spustí předanou korutinu v main() našem příkladu a spravuje smyčku asyncio událostí. Koroutiny jsou deklarovány syntaxí async/await. V tomto příkladu main() korutin nejprve vytvoří nejvyšší úroveň BlobServiceClient pomocí async with, pak zavolá metodu, která vytvoří kontejner. Mějte na paměti, že pouze klient nejvyšší úrovně musí používat async with, protože ostatní klienti, kteří z něj vytvořili, sdílejí stejný fond připojení.

    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. Přidejte kód pro vytvoření kontejneru. Kód je stejný jako synchronní příklad s tím rozdílem, že metoda je deklarována pomocí async klíčového await slova a klíčové slovo se používá při volání create_container metody.

    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')
    

S tímto základním nastavením můžete implementovat další příklady v tomto článku jako koruty pomocí syntaxe async/await.

Zdroje informací

Další informace o vytvoření kontejneru pomocí klientské knihovny Azure Blob Storage pro Python najdete v následujících zdrojích informací.

Operace rozhraní REST API

Sada Azure SDK pro Python obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Pythonu. Metody klientské knihovny pro vytvoření kontejneru používají následující operaci rozhraní REST API:

Ukázky kódu

Prostředky klientské knihovny