Supprimer et restaurer un conteneur d’objets blob avec TypeScript

Cet article explique comment supprimer des conteneurs à l’aide de la bibliothèque de client de Stockage Azure pour JavaScript. Si vous avez activé la suppression réversible de conteneur, vous pouvez restaurer les conteneurs supprimés.

Prérequis

  • Les exemples de cet article supposent que vous disposez déjà d'un projet configuré pour fonctionner avec la bibliothèque client Azure Blob Storage pour JavaScript. Pour en savoir plus sur la configuration de votre projet, y compris l'installation du package, l'importation de modules et la création d'un objet client autorisé pour travailler avec les ressources de données, consultez Bien démarrer avec Azure Blob Storage et TypeScript.
  • Le mécanisme d'autorisation doit disposer des autorisations nécessaires pour supprimer un conteneur d'objets blob ou pour restaurer un conteneur supprimé de manière réversible. Pour plus d’informations, consultez les conseils d’autorisation pour les opérations d’API REST suivantes :

Supprimer un conteneur

Pour supprimer un conteneur dans TypeScript, créez un BlobServiceClient ou ContainerClient, puis utilisez l’une des méthodes suivantes :

Après avoir supprimé un conteneur, vous ne pouvez pas créer un conteneur portant le même nom pendant au moins 30 secondes. Une tentative de création d’un conteneur portant le même nom échoue avec le code d’erreur HTTP 409 (conflit). Toutes les autres opérations sur le conteneur ou les blobs qu’il contient échouent avec le code d’erreur HTTP 404 (introuvable).

Supprimer un conteneur avec BlobServiceClient

L’exemple suivant supprime le conteneur spécifié. Utilisez BlobServiceClient pour supprimer un conteneur :

// delete container immediately on blobServiceClient
async function deleteContainerImmediately(
  blobServiceClient: BlobServiceClient,
  containerName: string
): Promise<ContainerDeleteResponse> {
  return await blobServiceClient.deleteContainer(containerName);
}

Supprimer un conteneur avec ContainerClient

L’exemple suivant montre comment supprimer tous les conteneurs dont le nom commence par un préfixe spécifié à l’aide d’un objet ContainerClient.

async function deleteContainersWithPrefix(
  blobServiceClient: BlobServiceClient,
  prefix: string
): Promise<void> {
  const containerOptions: ServiceListContainersOptions = {
    // only delete containers not deleted
    includeDeleted: false,
    includeMetadata: false,
    includeSystem: true,
    prefix
  };

  for await (const containerItem of blobServiceClient.listContainers(
    containerOptions
  )) {
    try {
      const containerClient: ContainerClient =
        blobServiceClient.getContainerClient(containerItem.name);

      const containerDeleteMethodOptions: ContainerDeleteMethodOptions = {};

      await containerClient.delete(containerDeleteMethodOptions);

      console.log(`deleted ${containerItem.name} container - success`);
    } catch (err: unknown) {
      if (err instanceof Error) {
        console.log(
          `deleted ${containerItem.name} container - failed - ${err.message}`
        );
      }
    }
  }
}

Restaurer un conteneur supprimé

Lorsque la suppression réversible de conteneur est activée pour un compte de stockage, un conteneur et son contenu peuvent être récupérés après suppression pendant la période de rétention que vous spécifiez. Vous pouvez restaurer un conteneur supprimé de manière réversible à l’aide d’un objet BlobServiceClient :

L’exemple suivant recherche un conteneur supprimé, obtient l’ID de version de ce conteneur supprimé, puis passe cet ID dans la méthode undeleteContainer pour restaurer le conteneur.

// Undelete specific container - last version
async function undeleteContainer(
  blobServiceClient: BlobServiceClient,
  containerName: string
): Promise<void> {
  // version to undelete
  let containerVersion: string | undefined;

  const containerOptions: ServiceListContainersOptions = {
    includeDeleted: true,
    prefix: containerName
  };

  // container listing returns version (timestamp) in the ContainerItem
  for await (const containerItem of blobServiceClient.listContainers(
    containerOptions
  )) {
    // if there are multiple deleted versions of the same container,
    // the versions are in asc time order
    // the last version is the most recent
    if (containerItem.name === containerName) {
      containerVersion = containerItem.version as string;
    }
  }

  if (containerVersion !== undefined) {
    const serviceUndeleteContainerOptions: ServiceUndeleteContainerOptions = {};

    const {
      containerClient,
      containerUndeleteResponse
    }: {
      containerClient: ContainerClient;
      containerUndeleteResponse: ContainerUndeleteResponse;
    } = await blobServiceClient.undeleteContainer(
      containerName,
      containerVersion,

      // optional/new container name - if unused, original container name is used
      //newContainerName
      serviceUndeleteContainerOptions
    );

    // Check delete
    if (containerUndeleteResponse.errorCode)
      throw Error(containerUndeleteResponse.errorCode);

    // undelete was successful
    console.log(`${containerName} is undeleted`);

    // do something with containerClient
    // ...
    // containerClient.listBlobsFlat({    includeMetadata: true,
    // includeSnapshots: false,
    // includeTags: true,
    // includeVersions: false,
    // prefix: ''});
  }
}

Ressources

Pour en savoir plus sur la suppression d’un conteneur à l’aide de la bibliothèque de client Stockage Blob Azure pour JavaScript, consultez les ressources suivantes.

Opérations de l'API REST

Le Kit de développement logiciel (SDK) Azure pour JavaScript contient des bibliothèques qui s'appuient sur l'API REST Azure, vous permettant d’interagir avec les opérations de l’API REST par le biais de paradigmes JavaScript familiers. Les méthodes de bibliothèque de client pour la suppression ou la restauration d’un conteneur utilisent les opérations d’API REST suivantes :

Exemples de code

Ressources de bibliothèque cliente

Voir aussi