Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Python 3.8 nebo novější
Nastavení prostředí
Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s klientskou knihovnou Azure Blob Storage pro Python. Další podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a Pythonem.
Pokud chcete pracovat s příklady kódu v tomto článku, nastavte projekt pomocí následujícího postupu.
Instalace balíčků
Nainstalujte následující balíčky pomocí pip install:
pip install azure-storage-blob azure-identity
Přidejte příkazy importu
Přidejte následující příkazy import:
from azure.core.exceptions import ResourceExistsError
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Autorizace
Autorizační mechanismus musí mít potřebná oprávnění k vytvoření kontejneru. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete vestavěnou roli Azure RBAC Storage Blob Data Contributor nebo vyšší. Další informace najdete v pokynech k autorizaci pro vytvoření kontejneru (REST API).
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient. Následující příklad ukazuje, jak vytvořit objekt klienta pomocí DefaultAzureCredential k autorizaci.
# 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)
Můžete také vytvořit klientské objekty pro konkrétní kontejnery nebo objekty blob, a to buď přímo, nebo z objektu BlobServiceClient . Další informace o vytváření a správě klientských objektů najdete v tématu Vytváření a správa klientských objektů, které pracují s datovými prostředky.
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í přímo 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 vám umožňuje odkazovat na 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:
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 ResourceExistsErrorPřidejte kód pro spuštění programu pomocí
asyncio.run. Tato funkce spustí v našem příkladu předanou korutinumain()a spravuje smyčku událostíasyncio. Koroutiny jsou deklarovány syntaxí async/await. V tomto příkladu nejprvemain()korutina vytvoří nejvyšší úroveňBlobServiceClientpomocíasync with, a poté zavolá metodu, která vytvoří kontejner. Mějte na paměti, že pouze klient na nejvyšší úrovni musí používatasync with, protože ostatní klienti, kteří jsou z něj vytvořeni, 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())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í klíčového slova
asynca klíčové slovoawaitse používá při volání metodycreate_container.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 z tohoto článku jako korutiny s použitím 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í.
Ukázky kódu
- Zobrazení synchronních nebo asynchronních ukázek kódu z tohoto článku (GitHub)
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:
- Vytvoření kontejneru (REST API)
Prostředky klientské knihovny
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro Python. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace v Pythonu.