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:
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 )
Aggiungere il codice per eseguire il programma usando
asyncio.run
. Questa funzione esegue la coroutine passata,main()
nell'esempio, e gestisce ilasyncio
ciclo di eventi. Le coroutine vengono dichiarate con la sintassi async/await. In questo esempio, lamain()
coroutine crea prima il primo livelloBlobServiceClient
usandoasync with
, quindi chiama il metodo che modifica il livello di accesso del BLOB. Si noti che solo il client di primo livello deve usareasync 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())
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 laawait
parola chiave viene usata quando si chiama ilset_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:
- Impostare il livello BLOB (API REST)
Risorse della libreria client
- Documentazione di riferimento della libreria client
- Codice sorgente della libreria client
- Pacchetto (PyPi)
Esempi di codice
- Visualizzare esempi di codice sincroni o asincroni di questo articolo (GitHub)