Partager via


Supprimer et restaurer un blob avec Go

Cet article montre comment supprimer des objets blob en utilisant le module de client Stockage Azure pour Go et restaurer des objets blob supprimés de manière réversible pendant la période de rétention.

Prérequis

Paramétrer votre environnement

Si vous n’avez aucun projet existant, cette section montre comment configurer un projet pour qu’il fonctionne avec le module client du Stockage Blob Azure pour Go. Les étapes incluent l’installation du module, l’ajout de chemins d’accès import et la création d’un objet client autorisé. Pour plus d’informations, consultez Prise en main de Stockage Blob Azure et de Go.

Installer des modules

Installez le module azblob à l’aide de la commande suivante :

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Pour vous authentifier auprès de Microsoft Entra ID (recommandé), installez le module azidentity à l’aide de la commande suivante :

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Ajouter des chemins d’importation

Dans votre fichier de code, ajoutez les chemins d’importation suivants :

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

Ces chemins d’importation représentent le minimum nécessaire pour démarrer. Certains exemples de code de cet article peuvent nécessiter des chemins d’importation supplémentaires. Pour plus d’informations et des exemples d’utilisation spécifiques, consultez Exemples de code.

Créer un objet client

Pour connecter une application à Stockage Blob, créez un objet client à l’aide de azblob.NewClient. L’exemple suivant montre comment créer un objet client à l’aide de DefaultAzureCredential pour l’autorisation :

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
}

Autorisation

Le mécanisme d’autorisation doit disposer des autorisations nécessaires pour supprimer un blob ou restaurer un blob supprimé de manière réversible. Pour l’autorisation avec Microsoft Entra ID (recommandé), vous devez disposer au minimum du rôle RBAC Azure intégré Contributeur aux données Blob du stockage. Pour en savoir plus, consultez les conseils d’autorisation pour les opérations Delete Blob (API REST) et Undelete Blob (API REST).

Supprimer un objet blob

Remarque

Lorsque la suppression réversible d’objets blob est activée pour un compte de stockage, vous ne pouvez pas effectuer de suppression définitive en utilisant des méthodes de bibliothèque de client. L’utilisation des méthodes de cet article permet de conserver une capture instantanée, une version d’objet blob ou un objet blob supprimé de manière réversible disponible jusqu’à l’expiration de la période de rétention, après quoi ils sont définitivement supprimés. Pour en savoir plus sur l’opération d’API REST sous-jacente, consultez Supprimer un blob (API REST).

Pour supprimer un blob, appelez la méthode suivante :

L’exemple suivant supprime un blob :

func deleteBlob(client *azblob.Client, containerName string, blobName string) {
    // Delete the blob
    _, err := client.DeleteBlob(context.TODO(), containerName, blobName, nil)
    handleError(err)
}

Si le blob a des instantanés associés, vous devez supprimer tous ses instantanés pour le supprimer. L’exemple suivant supprime un blob et ses instantanés :

func deleteBlobWithSnapshots(client *azblob.Client, containerName string, blobName string) {
    // Delete the blob and its snapshots
    _, err := client.DeleteBlob(context.TODO(), containerName, blobName, &blob.DeleteOptions{
        DeleteSnapshots: to.Ptr(blob.DeleteSnapshotsOptionTypeInclude),
    })
    handleError(err)
}

Pour supprimer uniquement les instantanés et non le blob lui-même, vous pouvez passer la valeur DeleteSnapshotsOptionTypeOnly au paramètre DeleteSnapshots.

Restaurer un objet blob supprimé

La suppression réversible d’objets blob protège un objet blob et ses versions, instantanés et métadonnées contre les suppressions ou les remplacements accidentels en conservant les données supprimées dans le système pendant un laps de temps spécifié. Pendant la période de rétention, vous pouvez restaurer l’objet blob à son état au moment de la suppression. Une fois la période de conservation expirée, le blob est supprimé définitivement. Pour plus d’informations sur la suppression réversible d’objets blob, consultez Suppression réversible pour les objets blob.

Vous pouvez utiliser les bibliothèques de client de Stockage Azure pour restaurer un objet blob ou une capture instantanée supprimés de manière réversible.

La façon de restaurer un objet blob supprimé de manière réversible dépend de l’activation du contrôle de version d’objets blob de votre compte de stockage. Pour plus d’informations sur la gestion de versions des objets blob, consultez Gestion de versions des objets blob. Consultez l’une des sections suivantes en fonction de votre scénario :

Restaurer des objets supprimés de manière réversible quand le contrôle de version est désactivé

Pour restaurer des blobs supprimés quand le versioning est désactivé, appelez l’une des méthodes suivantes :

Cette méthode restaure le contenu et les métadonnées d’un blob supprimé de manière réversible et de tous les instantanés associés supprimés de manière réversible. L’appel de cette méthode pour un blob qui n’a pas été supprimé est sans effet.

func restoreDeletedBlob(client *azblob.Client, containerName string, blobName string) {
    // Reference the blob as a client object
    blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    // Restore the deleted blob
    _, err := blobClient.Undelete(context.TODO(), &blob.UndeleteOptions{})
    handleError(err)
}

Restaurer des objets supprimés de manière réversible quand le versioning est activé

Si un compte de stockage est configuré pour activer le contrôle de version de blobs, la suppression d’un blob définit la version actuelle du blob comme version précédente. Pour restaurer un blob supprimé de manière réversible quand le versioning est activé, copiez une version précédente sur le blob de base. Vous pouvez utiliser la méthode suivante :

L’exemple de code suivant identifie une version d’un blob supprimé, et restaure cette version en la copiant dans le blob de base :

func restoreDeletedBlobVersion(client *azblob.Client, containerName string, blobName string, versionID string) {
    // Reference the blob as a client object
    baseBlobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    blobVersionClient, err := baseBlobClient.WithVersionID(versionID)
    handleError(err)

    // Restore the blob version by copying it to the base blob
    _, err = baseBlobClient.StartCopyFromURL(context.TODO(), blobVersionClient.URL(), nil)
    handleError(err)
}

Remarque

Les exemples de code de ce guide sont conçus pour vous aider à bien démarrer avec Stockage Blob Azure et Go. Vous devez modifier la gestion des erreurs et les valeurs Context pour répondre aux besoins de votre application.

Ressources

Pour en savoir plus sur la suppression de blob et la restauration de blob supprimés à l’aide du module client Stockage Blob Azure pour Go, consultez les ressources suivantes.

Exemples de code

Opérations de l'API REST

Azure SDK pour Go contient des bibliothèques qui s’appuient sur l’API REST Azure et vous permettant d’interagir avec des opérations de l’API REST par le biais de paradigmes Go familiers. Les méthodes de la bibliothèque de client pour supprimer des objets blob et restaurer des objets blob supprimés utilisent les opérations d’API REST suivantes :

Ressources du module client

Voir aussi

  • Cet article fait partie du guide du développeur Stockage Blob pour Go. Pour en savoir plus, consultez la liste complète des articles du guide du développeur dans Générer votre application Go.