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
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Migrare una service connection a workload identity federation in Azure DevOps
Creare una custom property in GitHub
Utilizzare Model as a Service su Microsoft Azure
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Utilizzare gRPC su App Service di Azure
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Paginare i risultati con QuickGrid in Blazor
Utilizzare Azure Cosmos DB con i vettori
Gestire i dati con Azure Cosmos DB Data Explorer
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
I più letti di oggi
- Windows DNA Parte prima
- Microsoft Visual Studio Code: un nuovo editor gratuito per Windows, MacOSX e Linux per sviluppatori ASP.NET e Node.js
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- Realizzare una Progressive Web Application con Blazor e ASP.NET Core
- ASP.NET 4.0 AJAX arriva alla Preview 5, in attesa della beta2 di ASP.NET 4.0
- Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
- IISControl: come comandare IIS
- Preview 2 di ASP.NET MVC 2.0 ed una nuova versione per AJAX Control Toolkit
- Docker e ASP.NET Core: portare i nostri siti web su container
- Abilitare e gestire il prerendering nelle applicazioni Blazor WebAssembly