Condividi tramite


Impostare o modificare il livello di accesso di un BLOB in blocchi con Python

Questo articolo illustra come impostare o modificare il livello di accesso per un BLOB in blocchi usando la libreria client Archiviazione di Azure per Python.

Per informazioni sulla modifica del livello di accesso di un BLOB tramite LE API asincrone, vedere Modificare il livello di accesso di un BLOB in modo asincrono.

Prerequisiti

  • Questo articolo presuppone che sia già stato configurato un progetto per lavorare con la libreria client Archiviazione BLOB di Azure per Python. Per informazioni sulla configurazione del progetto, tra cui l'installazione del pacchetto, l'aggiunta import di istruzioni e la creazione di un oggetto client autorizzato, vedere Introduzione a Archiviazione BLOB di Azure e Python.
  • Il meccanismo di autorizzazione deve disporre delle autorizzazioni per impostare il livello di accesso del BLOB. Per altre informazioni, vedere le linee guida per l'autorizzazione per l'operazione API REST seguente:

Informazioni sui livelli di accesso blob in blocchi

Per gestire i costi per le esigenze di archiviazione, può essere utile organizzare i dati in base alla frequenza di accesso e alla durata della conservazione. Archiviazione di Azure offre livelli di accesso diversi in modo da poter archiviare i dati BLOB nel modo più conveniente in base al modo in cui viene usato.

Livelli di accesso per i dati BLOB

Archiviazione di Azure livelli di accesso includono:

  • Livello ad accesso frequente: un livello online ottimizzato per l'archiviazione dei dati a cui si accede o viene modificato di frequente. Il livello ad accesso frequente ha i costi di archiviazione più elevati, ma i costi di accesso più bassi.
  • Livello ad accesso sporadico: un livello online ottimizzato per l'archiviazione dei dati a cui si accede raramente o viene modificato. I dati nel livello ad accesso sporadico devono essere archiviati per un minimo di 30 giorni. Il livello ad accesso sporadico ha costi di archiviazione inferiori e costi di accesso più elevati rispetto al livello ad accesso frequente.
  • Livello ad accesso sporadico: un livello online ottimizzato per l'archiviazione dei dati a cui si accede raramente o viene modificato. I dati nel livello ad accesso saltuario devono rimanere archiviati per almeno 90 giorni. Il livello di accesso saltuario presenta costi di archiviazione più bassi e costi di accesso più alti rispetto al livello di accesso frequente.
  • Livello archivio: un livello offline ottimizzato per l'archiviazione dei dati a cui si accede raramente e che presenta requisiti di latenza flessibili nell'ordine di ore. I dati nel livello archivio devono essere archiviati per un minimo di 180 giorni.

Per altre informazioni sui livelli di accesso, vedere Livelli di accesso per i dati BLOB.

Mentre un BLOB è nel livello di accesso Archivio, viene considerato offline e non può essere letto o modificato. Per leggere o modificare i dati in un BLOB archiviato, è prima necessario riattivare il BLOB in un livello online. Per altre informazioni sulla riattivazione di un BLOB dal livello Archivio a un livello online, vedere Riattivazione blob dal livello Archivio.

Restrizioni

L'impostazione del livello di accesso è consentita solo nei BLOB in blocchi. Per altre informazioni sulle restrizioni relative all'impostazione del livello di accesso di un BLOB in blocchi, vedere Impostare il livello BLOB (API REST).

Nota

Per impostare il livello di accesso su Cold usando Python, è necessario usare una versione minima della libreria client 12.15.0.

Impostare il livello di accesso di un BLOB durante il caricamento

È possibile impostare il livello di accesso di un BLOB al caricamento passando l'argomento standard_blob_tier parola chiave a upload_blob o upload_blob_from_url.

L'esempio di codice seguente illustra come impostare il livello di accesso durante il caricamento di un BLOB:

def upload_blob_access_tier(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
    blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
    
    #Upload blob to the cool tier
    with open(file=os.path.join(r'file_path', blob_name), mode="rb") as data:
        blob_client = blob_client.upload_blob(data=data, overwrite=True, standard_blob_tier=StandardBlobTier.COOL)

Per altre informazioni sul caricamento di un BLOB con Python, vedere Caricare un BLOB con Python.

Modificare il livello di accesso per un BLOB in blocchi esistente

È possibile modificare il livello di accesso di un BLOB in blocchi esistente usando la funzione seguente:

L'esempio di codice seguente illustra come modificare il livello di accesso per un BLOB esistente in Cool:

def change_blob_access_tier(self, blob_client: BlobClient):
    # Change the blob access tier to cool
    blob_client.set_standard_blob_tier(StandardBlobTier.COOL)

Se si riattiva un BLOB archiviato, è possibile passare facoltativamente l'argomento rehydrate_priority parola chiave come HIGH o STANDARD.

Copiare un BLOB in un livello di accesso diverso

È possibile modificare il livello di accesso di un BLOB in blocchi esistente specificando un livello di accesso come parte di un'operazione di copia. Per modificare il livello di accesso durante un'operazione di copia, passare l'argomento standard_blob_tier della parola chiave a start_copy_from_url. Se si riattiva un BLOB dal livello archivio usando un'operazione di copia, è possibile passare facoltativamente l'argomento rehydrate_priority parola chiave come HIGH o STANDARD.

L'esempio di codice seguente illustra come riattivare un BLOB archiviato nel Hot livello usando un'operazione di copia:

def rehydrate_blob_using_copy(self, source_archive_blob: BlobClient, destination_rehydrated_blob: BlobClient):
    # Note: the destination blob must have a different name than the source blob

    # Start the copy operation - specify the rehydrate priority and blob access tier
    copy_operation = dict()
    copy_operation = destination_rehydrated_blob.start_copy_from_url(
        source_url=source_archive_blob.url,
        standard_blob_tier=StandardBlobTier.HOT,
        rehydrate_priority=RehydratePriority.STANDARD,
        requires_sync=False)

Per altre informazioni sulla copia di un BLOB con Python, vedere Copiare un BLOB con Python.

Modificare il livello di accesso di un BLOB in modo asincrono

La libreria client Archiviazione BLOB di Azure per Python supporta la modifica asincrona del livello di accesso di un BLOB. Per altre informazioni sui requisiti di configurazione del progetto, vedere Programmazione asincrona.

Seguire questa procedura per modificare il livello di accesso di un BLOB usando le API asincrone:

  1. Aggiungere le seguenti istruzioni Import:

    import asyncio
    
    from azure.storage.blob import (
    StandardBlobTier
    )
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import (
    BlobServiceClient,
    BlobClient
    )
    
  2. Aggiungere il codice per eseguire il programma usando asyncio.run. Questa funzione esegue la coroutine passata, main() nell'esempio, e gestisce il asyncio ciclo di eventi. Le coroutine vengono dichiarate con la sintassi async/await. In questo esempio, la main() coroutine crea prima il primo livello BlobServiceClient usando async with, quindi chiama il metodo che modifica il livello di accesso del BLOB. Si noti che solo il client di primo livello deve usare async with, come altri client creati da esso condividono lo stesso pool di connessioni.

    async def main():
        sample = BlobAccessTierSamples()
    
        # TODO: Replace <storage-account-name> with an 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:
            # Change the blob access tier to cool
            blob_client = blob_service_client.get_blob_client(container="sample-container", blob="sample-blob.txt")
            await sample.change_blob_access_tier(blob_client=blob_client)
    
    if __name__ == '__main__':
        asyncio.run(main())
    
  3. Aggiungere il codice per modificare il livello di accesso del BLOB. Il codice è uguale all'esempio sincrono, ad eccezione del fatto che il metodo viene dichiarato con la async parola chiave e la await parola chiave viene usata quando si chiama il set_standard_blob_tier metodo .

    async def change_blob_access_tier(self, blob_client: BlobClient):
        # Change the blob access tier to cool
        await blob_client.set_standard_blob_tier(StandardBlobTier.COOL)
    

Con questa configurazione di base, è possibile implementare altri esempi in questo articolo come coroutine usando la sintassi async/await.

Risorse

Per altre informazioni sull'impostazione dei livelli di accesso tramite la libreria client Archiviazione BLOB di Azure per Python, vedere le risorse seguenti.

Operazioni dell'API REST

Azure SDK per Python contiene librerie basate sull'API REST di Azure, che consentono di interagire con le operazioni dell'API REST tramite paradigmi Python noti. I metodi della libreria client per l'impostazione dei livelli di accesso usano l'operazione API REST seguente:

Risorse della libreria client

Esempi di codice

Vedi anche