Odstranění a obnovení kontejneru objektů blob pomocí TypeScriptu
Tento článek ukazuje, jak odstranit kontejnery s klientskou knihovnou Azure Storage pro JavaScript. Pokud jste povolili obnovitelné odstranění kontejneru, můžete odstraněné kontejnery obnovit.
Předpoklady
- Příklady v tomto článku předpokládají, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou Azure Blob Storage pro JavaScript. Další informace o nastavení projektu, včetně instalace balíčku, importu modulů a vytvoření autorizovaného klientského objektu pro práci s datovými prostředky, najdete v tématu Začínáme se službou Azure Blob Storage a TypeScriptem.
- Autorizační mechanismus musí mít oprávnění k odstranění kontejneru objektů blob nebo obnovení obnovitelného odstraněného kontejneru. Další informace najdete v pokynech k autorizaci pro následující operace rozhraní REST API:
Odstranění kontejneru
Pokud chcete odstranit kontejner v TypeScriptu, vytvořte objekt BlobServiceClient nebo ContainerClient a pak použijte jednu z následujících metod:
- BlobServiceClient.deleteContainer
- ContainerClient.Odstranit
- ContainerClient.deleteIfExists
Po odstranění kontejneru nemůžete vytvořit kontejner se stejným názvem alespoň po dobu 30 sekund. Pokus o vytvoření kontejneru se stejným názvem selže s kódem chyby HTTP 409 (Konflikt). Všechny ostatní operace v kontejneru nebo objektech blob, které obsahuje, selžou s kódem chyby HTTP 404 (Nenalezena).
Odstranění kontejneru pomocí BlobServiceClient
Následující příklad odstraní zadaný kontejner. Pomocí Objektu blobServiceClient odstraňte kontejner:
// delete container immediately on blobServiceClient
async function deleteContainerImmediately(
blobServiceClient: BlobServiceClient,
containerName: string
): Promise<ContainerDeleteResponse> {
return await blobServiceClient.deleteContainer(containerName);
}
Odstranění kontejneru pomocí ContainerClient
Následující příklad ukazuje, jak odstranit všechny kontejnery, jejichž název začíná zadanou předponou pomocí 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}`
);
}
}
}
}
Obnovení odstraněného kontejneru
Pokud je pro účet úložiště povolené obnovitelné odstranění kontejneru, může se po odstranění obnovit kontejner a jeho obsah během zadané doby uchovávání. Obnovitelně odstraněný kontejner můžete obnovit pomocí objektu BlobServiceClient :
- BlobServiceClient.undeleteContainer
Následující příklad najde odstraněný kontejner, získá ID verze tohoto odstraněného kontejneru a pak toto ID předá do metody undeleteContainer pro obnovení kontejneru.
// 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: ''});
}
}
Zdroje informací
Další informace o odstranění kontejneru pomocí klientské knihovny Azure Blob Storage pro JavaScript najdete v následujících zdrojích informací.
Operace rozhraní REST API
Sada Azure SDK pro JavaScript obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat JavaScriptu. Metody klientské knihovny pro odstranění nebo obnovení kontejneru používají následující operace rozhraní REST API:
- Odstranění kontejneru (REST API)
- Obnovení kontejneru (REST API)