Megosztás a következőn keresztül:


Blobtároló törlése és visszaállítása TypeScript használatával

Ez a cikk bemutatja, hogyan törölhet tárolókat az Azure Storage JavaScript-ügyfélkódtárával. Ha engedélyezte a tárolók helyreállítható törlését, visszaállíthatja a törölt tárolókat.

Előfeltételek

  • A cikkben szereplő példák feltételezik, hogy már rendelkezik egy projekttel, amely a JavaScripthez készült Azure Blob Storage ügyfélkódtárral dolgozik. Ha többet szeretne megtudni a projekt beállításáról, beleértve a csomagtelepítést, a modulok importálását és egy engedélyezett ügyfélobjektum létrehozását az adaterőforrások használatához, olvassa el az Azure Blob Storage és a TypeScript használatának első lépéseit.
  • Az engedélyezési mechanizmusnak rendelkeznie kell a blobtároló törléséhez vagy egy helyreállíthatóan törölt tároló visszaállításához szükséges engedélyekkel. További információkért tekintse meg az alábbi REST API-műveletek engedélyezési útmutatóját:

Tároló törlése

A TypeScriptben lévő tároló törléséhez hozzon létre egy BlobServiceClientet vagy ContainerClientet, majd használja az alábbi módszerek egyikét:

A tároló törlése után legalább 30 másodpercig nem hozhat létre azonos nevű tárolót. Ha egy azonos nevű tárolót próbál létrehozni, a 409-ben megadott HTTP-hibakód (ütközés) meghiúsul. A tárolón vagy a blobokon található egyéb műveletek a 404-ben (nem található) hibakóddal meghiúsulnak.

Tároló törlése a BlobServiceClient használatával

Az alábbi példa törli a megadott tárolót. Tároló törlése a BlobServiceClient használatával:

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

Tároló törlése a ContainerClient használatával

Az alábbi példa bemutatja, hogyan törölheti az összes olyan tárolót, amelynek a neve egy megadott előtaggal kezdődik egy ContainerClient használatával.

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

Törölt tároló visszaállítása

Ha a tároló helyreállítható törlése engedélyezve van egy tárfiókhoz, előfordulhat, hogy a tároló és tartalma a törlés után, a megadott megőrzési időn belül helyreáll. Helyreállíthatóan törölt tárolót blobServiceClient-objektum használatával állíthat vissza:

Az alábbi példa megkeres egy törölt tárolót, lekéri a törölt tároló verzióazonosítóját, majd átadja az azonosítót az undeleteContainer metódusnak a tároló visszaállításához.

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

Források

Ha többet szeretne megtudni egy tároló törléséről a JavaScripthez készült Azure Blob Storage ügyfélkódtár használatával, tekintse meg az alábbi erőforrásokat.

REST API-műveletek

Az Azure SDK for JavaScript olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát ismert JavaScript-paradigmákon keresztül. A tároló törlésére vagy visszaállítására szolgáló ügyfélkódtár-metódusok a következő REST API-műveleteket használják:

Kódminták

Ügyfélkódtár erőforrásai

Lásd még