Dela via


Kom igång med Azure Blob Storage och Python

Den här artikeln visar hur du ansluter till Azure Blob Storage med hjälp av Azure Blob Storage-klientbiblioteket för Python. När koden är ansluten kan den fungera på containrar, blobar och funktioner i Blob Storage-tjänsten.

API-referenspaket (PyPi) | Exempel på källkod | | för bibliotek Ge feedback |

Förutsättningar

Konfigurera projektet

Det här avsnittet beskriver hur du förbereder ett projekt för att arbeta med Azure Blob Storage-klientbiblioteket för Python.

Från projektkatalogen installerar du paket för Azure Blob Storage- och Azure Identity-klientbiblioteken med hjälp av pip install kommandot . Azure-identitetspaketet behövs för lösenordslösa anslutningar till Azure-tjänster.

pip install azure-storage-blob azure-identity

Öppna sedan kodfilen och lägg till nödvändiga importinstruktioner. I det här exemplet lägger vi till följande i vår .py-fil :

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

Information om Blob-klientbiblioteket:

  • azure.storage.blob: Innehåller de primära klasser (klientobjekt) som du kan använda för att arbeta med tjänsten, containrar och blobar.

Asynkron programmering

Azure Blob Storage-klientbiblioteket för Python stöder både synkrona och asynkrona API:er. Asynkrona API:er baseras på Pythons asynkrona bibliotek.

Följ dessa steg för att använda asynkrona API:er i projektet:

  • Installera en asynkron transport, till exempel aiohttp. Du kan installera aiohttp tillsammans med azure-storage-blob med hjälp av ett valfritt beroendeinstallationskommando. I det här exemplet använder vi följande pip install kommando:

    pip install azure-storage-blob[aio]
    
  • Öppna kodfilen och lägg till nödvändiga importinstruktioner. I det här exemplet lägger vi till följande i vår .py-fil :

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient, BlobClient, ContainerClient
    

    -instruktionen import asyncio krävs bara om du använder biblioteket i koden. Det läggs till här för tydlighetens skull, eftersom exemplen i utvecklarguideartiklarna använder asyncio biblioteket.

  • Skapa ett klientobjekt med för async with att börja arbeta med dataresurser. Endast klienten på den översta nivån behöver använda async with, eftersom andra klienter som skapats från den delar samma anslutningspool. I det här exemplet skapar vi ett BlobServiceClient objekt med och async withskapar sedan ett ContainerClient objekt:

    async with BlobServiceClient(account_url, credential=credential) as blob_service_client:
        container_client = blob_service_client.get_container_client(container="sample-container")
    

    Mer information finns i asynkrona exempel i Auktorisera åtkomst och ansluta till Blob Storage.

Information om blob-asynkront klientbibliotek:

  • azure.storage.blob.aio: Innehåller de primära klasser som du kan använda för att arbeta med tjänsten, containrar och blobar asynkront.

Auktorisera åtkomst och ansluta till Blob Storage

Om du vill ansluta en app till Blob Storage skapar du en instans av klassen BlobServiceClient . Det här objektet är startpunkten för att interagera med dataresurser på lagringskontonivå. Du kan använda den för att arbeta med lagringskontot och dess containrar. Du kan också använda tjänstklienten för att skapa containerklienter eller blobklienter, beroende på vilken resurs du behöver arbeta med.

Mer information om hur du skapar och hanterar klientobjekt, inklusive metodtips, finns i Skapa och hantera klientobjekt som interagerar med dataresurser.

Du kan auktorisera ett BlobServiceClient objekt med hjälp av en Microsoft Entra-auktoriseringstoken, en kontoåtkomstnyckel eller en signatur för delad åtkomst (SAS). För optimal säkerhet rekommenderar Microsoft att du använder Microsoft Entra-ID med hanterade identiteter för att auktorisera begäranden mot blobdata. Mer information finns i Auktorisera åtkomst till blobar med hjälp av Microsoft Entra-ID.

Om du vill auktorisera med Microsoft Entra-ID måste du använda ett säkerhetsobjekt. Vilken typ av säkerhetsobjekt du behöver beror på var appen körs. Använd följande tabell som en guide:

Var appen körs Säkerhetsobjekt Vägledning
Lokal dator (utveckla och testa) Tjänstens huvudnamn Information om hur du registrerar appen, konfigurerar en Microsoft Entra-grupp, tilldelar roller och konfigurerar miljövariabler finns i Auktorisera åtkomst med utvecklartjänstens huvudnamn
Lokal dator (utveckla och testa) Användaridentitet Information om hur du konfigurerar en Microsoft Entra-grupp, tilldelar roller och loggar in på Azure finns i Auktorisera åtkomst med autentiseringsuppgifter för utvecklare
Värdhanterad i Azure Hanterad identitet Information om hur du aktiverar hanterad identitet och tilldelar roller finns i Auktorisera åtkomst från Azure-värdbaserade appar med hjälp av en hanterad identitet
Värdhanterad utanför Azure (till exempel lokala appar) Tjänstens huvudnamn Information om hur du registrerar appen, tilldelar roller och konfigurerar miljövariabler finns i Auktorisera åtkomst från lokala appar med hjälp av ett huvudnamn för programtjänsten

Auktorisera åtkomst med defaultAzureCredential

Ett enkelt och säkert sätt att auktorisera åtkomst och ansluta till Blob Storage är att hämta en OAuth-token genom att skapa en DefaultAzureCredential-instans . Du kan sedan använda autentiseringsuppgifterna för att skapa ett BlobServiceClient-objekt .

I följande exempel skapas ett BlobServiceClient objekt med :DefaultAzureCredential

def get_blob_service_client_token_credential(self):
    # 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)

    return blob_service_client

Om projektet använder asynkrona API:er instansierar BlobServiceClient du med :async with

# 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:
    # Work with data resources in the storage account

Skapa appen

När du skapar appar för att arbeta med dataresurser i Azure Blob Storage interagerar koden främst med tre resurstyper: lagringskonton, containrar och blobar. Mer information om dessa resurstyper, hur de relaterar till varandra och hur appar interagerar med resurser finns i Förstå hur appar interagerar med Blob Storage-dataresurser.

Följande guider visar hur du kommer åt data och utför specifika åtgärder med hjälp av Azure Storage-klientbiblioteket för Python:

Guide beskrivning
Konfigurera en återförsöksprincip Implementera återförsöksprinciper för klientåtgärder.
Kopiera blobar Kopiera en blob från en plats till en annan.
Skapa en container Skapa blobcontainrar.
Skapa en SAS för användardelegering Skapa en SAS för användardelegering för en container eller blob.
Skapa och hantera bloblån Upprätta och hantera ett lås på en blob.
Skapa och hantera containerlån Upprätta och hantera ett lås på en container.
Ta bort och återställa blobar Ta bort blobar och återställ mjukt borttagna blobar.
Ta bort och återställa containrar Ta bort containrar och återställ mjukt borttagna containrar.
Ladda ned blobar Ladda ned blobar med hjälp av strängar, strömmar och filsökvägar.
Hitta blobar med taggar Ange och hämta taggar och använd taggar för att hitta blobar.
Lista blobar Lista blobar på olika sätt.
Lista containrar Visa en lista över containrar i ett konto och de olika alternativ som är tillgängliga för att anpassa en lista.
Hantera egenskaper och metadata (blobar) Hämta och ange egenskaper och metadata för blobar.
Hantera egenskaper och metadata (containrar) Hämta och ange egenskaper och metadata för containrar.
Prestandajustering för dataöverföringar Optimera prestanda för dataöverföringsåtgärder.
Ange eller ändra åtkomstnivån för en blob Ange eller ändra åtkomstnivån för en blockblob.
Ladda upp blobar Lär dig hur du laddar upp blobar med hjälp av strängar, strömmar, filsökvägar och andra metoder.