Eliminare e ripristinare un contenitore BLOB con Go
Questo articolo illustra come eliminare i contenitori con il modulo client di Archiviazione di Azure per Go. Se l'eliminazione temporanea dei contenitori è stata abilitata, è possibile ripristinare i contenitori eliminati.
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- Account di archiviazione di Azure: creare un account di archiviazione
- Go 1.18+
Configurazione dell'ambiente
Se non si ha un progetto esistente, questa sezione illustra come configurare un progetto per l'uso con il modulo client di Archiviazione BLOB di Azure per Go. I passaggi includono l'installazione del modulo, l'aggiunta di percorsi import
e la creazione di un oggetto client autorizzato. Per informazioni dettagliate, vedere Introduzione all'archiviazione BLOB di Azure e Go.
Installare i moduli
Installare il modulo azblob usando il comando seguente:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Per eseguire l'autenticazione con Microsoft Entra ID (scelta consigliata), installare il modulo azidentity
usando il comando seguente:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Aggiungere percorsi di importazione
Nel file di codice aggiungere i percorsi di importazione seguenti:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Questi percorsi di importazione rappresentano il minimo necessario per iniziare. Alcuni esempi di codice in questo articolo potrebbero richiedere percorsi di importazione aggiuntivi. Per informazioni dettagliate specifiche e utilizzo di esempio, vedere Esempi di codice.
Creare un oggetto client
Per connettere un'app all'archiviazione BLOB, creare un oggetto client usando azblob. NewClient. Nell'esempio seguente viene illustrato come creare un oggetto client usando DefaultAzureCredential
per l'autorizzazione:
func getServiceClientTokenCredential(accountURL string) *azblob.Client {
// Create a new service client with token credential
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
client, err := azblob.NewClient(accountURL, credential, nil)
handleError(err)
return client
}
Autorizzazione
Il meccanismo di autorizzazione deve disporre delle autorizzazioni necessarie per eliminare o ripristinare un contenitore. Per l'autorizzazione con Microsoft Entra ID (scelta consigliata), è necessario disporre del ruolo predefinito di Controllo degli accessi in base al ruolo di Azure Collaboratore ai dati del BLOB di archiviazione o ruolo superiore. Per altre informazioni, vedere le indicazioni sulle autorizzazioni per Delete Container (API REST) e Restore Container (API REST).
Eliminare un contenitore
Per eliminare un contenitore, chiamare il metodo seguente:
Dopo aver eliminato un contenitore, non è possibile creare un contenitore con lo stesso nome per almeno 30 secondi. Il tentativo di creare un contenitore con lo stesso nome ha esito negativo con codice di errore HTTP 409 (Conflict)
. Qualsiasi altra operazione sul contenitore o sui BLOB in esso contenuti ha esito negativo con codice di errore HTTP 404 (Not Found)
.
L'esempio seguente mostra come eliminare un contenitore specificato:
func deleteContainer(client *azblob.Client, containerName string) {
// Delete the container
_, err := client.DeleteContainer(context.TODO(), containerName, nil)
handleError(err)
}
Ripristinare un contenitore eliminato
Quando l'eliminazione temporanea del contenitore è abilitata per un account di archiviazione, un contenitore eliminato e il relativo contenuto possono essere recuperati entro un periodo di conservazione specificato. Per altre informazioni sull'eliminazione temporanea dei contenitori, vedere Abilitare e gestire l'eliminazione temporanea per i contenitori. È possibile ripristinare un contenitore eliminato temporaneamente chiamando il metodo seguente dall'oggetto ServiceClient incorporato per l'oggetto client:
L'esempio seguente elenca i contenitori, inclusi i contenitori eliminati temporaneamente, ed esegue iterazioni nell'elenco per ripristinare il contenitore eliminato temporaneamente specificato:
func restoreDeletedContainer(client *azblob.Client, containerName string) {
// List containers, included deleted ones
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
Include: azblob.ListContainersInclude{Deleted: true},
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, container := range resp.ContainerItems {
if *container.Name == containerName && *container.Deleted {
// Restore the deleted container
_, err := client.ServiceClient().RestoreContainer(context.TODO(), containerName, *container.Version, nil)
handleError(err)
}
}
}
}
Nota
Gli esempi di codice in questa guida sono utili per iniziare a usare Archiviazione BLOB di Azure e Go. È consigliabile modificare la gestione degli errori e i valori Context
per soddisfare le esigenze dell'applicazione.
Risorse
Per altre informazioni sull'eliminazione di un contenitore tramite il modulo client di Archiviazione BLOB di Azure per Go, vedere le risorse seguenti.
Esempi di codice
- Vedere gli esempi di codice di questo articolo (GitHub)
Operazioni dell'API REST
Azure SDK per Go contiene librerie basate sull'API REST di Azure che consentono di interagire con le operazioni dell'API REST tramite paradigmi Go noti. I metodi della libreria client per eliminare o ripristinare un contenitore usano le operazioni API REST seguenti:
- Delete Container (API REST)
- Restore Container (API REST)
Risorse del modulo client
- Documentazione di riferimento del modulo client
- Codice sorgente del modulo client
- Pacchetto (pkg.go.dev)
Vedi anche
- Eliminazione temporanea per i contenitori
- Abilitare e gestire l'eliminazione temporanea per i contenitori
Contenuto correlato
- Questo articolo fa parte della Guida per sviluppatori di Archiviazione BLOB per Go. Per altre informazioni, vedere l’elenco completo degli articoli della Guida per sviluppatori inCreare la propria app Go.