Löschen und Wiederherstellen eines Blobcontainers mit TypeScript

In diesem Artikel wird beschrieben, wie Container mithilfe der Azure Storage-Clientbibliothek für JavaScript gelöscht werden. Wenn Sie das vorläufige Löschen von Containern aktiviert haben, können Sie gelöschte Container wiederherstellen.

Voraussetzungen

  • Bei den Beispielen in diesem Artikel wird davon ausgegangen, dass Sie bereits ein Projekt für die Arbeit mit der Azure Blob Storage-Clientbibliothek für JavaScript eingerichtet haben. Informationen zum Einrichten Ihres Projekts – einschließlich Paketinstallation, Importieren von Modulen und Erstellen eines autorisierten Clientobjekts für die Verwendung mit Datenressourcen  – finden Sie unter Erste Schritte mit Azure Blob Storage und TypeScript.
  • Der Autorisierungsmechanismus muss über Berechtigungen zum Löschen eines Blobcontainers oder zum Wiederherstellen eines vorläufig gelöschten Containers verfügen. Weitere Informationen finden Sie im Autorisierungsleitfaden für die folgenden REST-API-Vorgänge:

Löschen eines Containers

Zum Löschen eines Containers in TypeScript erstellen Sie ein BlobServiceClient- oder ContainerClient-Objekt. Verwenden Sie dann eine der folgenden Methoden:

Nachdem Sie einen Container gelöscht haben, können Sie mindestens 30 Sekunden lang keinen Container mit demselben Namen erstellen. Beim Versuch, einen gleichnamigen Container zu erstellen, tritt der HTTP-Fehlercode 409 (Konflikt) auf. Bei allen anderen Vorgängen für den Container oder den darin enthaltenen Blobs tritt der HTTP-Fehlercode 404 (Nicht gefunden) auf.

Container mit BlobServiceClient löschen

Im folgenden Beispiel wird der angegebene Container gelöscht. Verwenden Sie das BlobServiceClient-Objekt zum Löschen eines Containers:

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

Container mit ContainerClient löschen

Im folgenden Beispiel wird gezeigt, wie mithilfe eines ContainerClient-Objekts alle Container gelöscht werden, deren Name mit einem angegebenen Präfix beginnt.

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}`
        );
      }
    }
  }
}

Wiederherstellen eines gelöschten Containers

Wenn das vorläufige Löschen für Container in einem Speicherkonto aktiviert ist, kann ein Container und dessen Inhalt nach dem Löschen innerhalb eines von Ihnen angegebenen Aufbewahrungszeitraums wiederhergestellt werden. Sie können einen vorläufig gelöschten Container mithilfe eines Objekts vom Typ BlobServiceClient wiederherstellen:

Im folgenden Beispiel wird ein gelöschter Container gefunden, die Versions-ID dieses gelöschten Containers abgerufen und dann an die Methode undeleteContainer übergeben, um den Container wiederherzustellen.

// 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: ''});
  }
}

Ressourcen

Weitere Informationen zum Löschen eines Containers mithilfe der Azure Blob Storage-Clientbibliothek für JavaScript finden Sie in den folgenden Ressourcen.

REST-API-Vorgänge

Das Azure SDK für JavaScript enthält Bibliotheken, die auf der zugrunde liegenden Azure-REST-API basieren und ermöglicht Ihnen dadurch die Interaktion mit REST-API-Vorgängen über vertraute JavaScript-Paradigmen. Die Clientbibliotheksmethoden zum Löschen oder Wiederherstellen eines Containers verwenden die folgenden REST-API-Vorgänge:

Codebeispiele

Ressourcen zur Clientbibliothek

Weitere Informationen