Per depositare file in modo affidabile e scalabile, Azure Storage è lo strumento principale da usare sulla piattaforma cloud. Su di esso si basano moltissimi servizi Microsoft e rispetto ad un file system tradizionale offre molte più funzionalità: scaling, replica, lease, snapshot, encryption e accesso via REST.
Tra le funzionalità che possiamo sfruttare esiste anche il soft delete, cioè la facoltà di non cancellare definitivamente un blob, ma di marcarlo semplicemente come cancellato. Questo fa sì che nel periodo di retention configurato possiamo recuperare il file e renderlo nuovamente disponibile. Questa funzionalità è comoda in quelle situazioni in cui è possibile che accidentalmente qualcuno o qualcosa possa cancellare la risorsa. L'attivazione o la disattivazione sono possibili in qualsiasi momento direttamente API o dal portale.

Possiamo configurare la retention fino ad un massimo di 365 giorni, ma dobbiamo considerare che per delete non è considera la sola operazione di DELETE, ma anche qualsiasi POST o PUT. Ogni operazione di cambiamento sul file scatena la creazione di uno snapshot. Anche l'eventuale cancellazione di uno snapshot fa sì che questo non venga immediatamente rimosso, ma posticipato a fine retention.
I file cancellati non sono visibili normalmente e dobbiamo listarli in modo esplicito, attraverso la spunta del portale.

Tramite API, invece, disponiamo di un enum apposito e per recuperare un blob cancellato possiamo utilizzare il metodo Undelete.
// Recupero di tutti i blob cancellati foreach (CloudBlob blob in container.ListBlobs(useFlatBlobListing: true, blobListingDetails: BlobListingDetails.Deleted)) { blob.Undelete(); }
Da un punto di vista del pricing dobbiamo considerare che gli snapshot di blob sovrascritti o cancellati vanno comunque ad ampliare la dimensione dello spazio occupato. La creazione automatica di uno snapshot, invece, non viene conteggiata come transazione, ma vengono contate solo le operazioni che hanno generato lo snapshot.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Generare una User Delegation SAS in .NET per Azure Blob Storage
Paginare i risultati con QuickGrid in Blazor
Utilizzare gRPC su App Service di Azure
Utilizzare Hybrid Cache in .NET 9
Aggiornare a .NET 9 su Azure App Service
Il nuovo controllo Range di Blazor 9
Estrarre dati randomici da una lista di oggetti in C#
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Testare l'invio dei messaggi con Event Hubs Data Explorer
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Configurare lo startup di applicazioni server e client con .NET Aspire
Migliorare l'organizzazione delle risorse con Azure Policy