Dela via


Ta bort och återställa en blobcontainer med TypeScript

Den här artikeln visar hur du tar bort containrar med Azure Storage-klientbiblioteket för JavaScript. Om du har aktiverat mjuk borttagning av containrar kan du återställa borttagna containrar.

Förutsättningar

  • Exemplen i den här artikeln förutsätter att du redan har ett projekt konfigurerat för att fungera med Azure Blob Storage-klientbiblioteket för JavaScript. Mer information om hur du konfigurerar projektet, inklusive paketinstallation, import av moduler och att skapa ett auktoriserat klientobjekt för att arbeta med dataresurser, finns i Kom igång med Azure Blob Storage och TypeScript.
  • Auktoriseringsmekanismen måste ha behörighet att ta bort en blobcontainer eller återställa en mjuk borttagen container. Mer information finns i auktoriseringsvägledningen för följande REST API-åtgärder:

Ta bort en container

Om du vill ta bort en container i TypeScript skapar du en BlobServiceClient eller ContainerClient och använder sedan någon av följande metoder:

När du har tagit bort en container kan du inte skapa en container med samma namn på minst 30 sekunder. Försök att skapa en container med samma namn misslyckas med HTTP-felkoden 409 (konflikt). Andra åtgärder i containern eller blobarna som den innehåller misslyckas med HTTP-felkoden 404 (hittades inte).

Ta bort container med BlobServiceClient

I följande exempel tas den angivna containern bort. Använd BlobServiceClient för att ta bort en container:

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

Ta bort container med ContainerClient

I följande exempel visas hur du tar bort alla containrar vars namn börjar med ett angivet prefix med hjälp av en 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}`
        );
      }
    }
  }
}

Återställa en borttagen container

När mjuk borttagning av containrar är aktiverat för ett lagringskonto kan en container och dess innehåll återställas efter att den har tagits bort inom en kvarhållningsperiod som du anger. Du kan återställa en mjuk borttagen container med hjälp av ett BlobServiceClient-objekt :

I följande exempel hittar du en borttagen container, hämtar versions-ID:t för den borttagna containern och skickar sedan det ID:t till metoden undeleteContainer för att återställa containern.

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

Resurser

Mer information om hur du tar bort en container med hjälp av Azure Blob Storage-klientbiblioteket för JavaScript finns i följande resurser.

REST API-åtgärder

Azure SDK för JavaScript innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta JavaScript-paradigm. Klientbiblioteksmetoderna för att ta bort eller återställa en container använder följande REST API-åtgärder:

Kodexempel

Klientbiblioteksresurser

Se även