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


Blobtároló törlése és visszaállítása .NET-tel

Ez a cikk bemutatja, hogyan törölhet tárolókat a .NET-hez készült Azure Storage-ügyfélkódtárral. 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

Saját környezet beállítása

Ha nem rendelkezik meglévő projekttel, ez a szakasz bemutatja, hogyan állíthat be projektet a .NET-hez készült Azure Blob Storage ügyfélkódtár használatához. A lépések közé tartozik a csomagtelepítés, az irányelvek hozzáadása using és egy engedélyezett ügyfélobjektum létrehozása. További részletekért tekintse meg az Azure Blob Storage és a .NET használatának első lépéseit.

Csomagok telepítése

A projektkönyvtárból telepítse az Azure Blob Storage- és Az Azure Identity-ügyfélkódtárak csomagjait a dotnet add package paranccsal. Az Azure.Identity-csomagra az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatokhoz van szükség.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Irányelvek hozzáadása using

Adja hozzá ezeket az using irányelveket a kódfájl elejéhez:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

A cikkben szereplő néhány példakód további using irányelveket igényelhet.

Ügyfélobjektum létrehozása

Ha egy alkalmazást a Blob Storage-hoz szeretne csatlakoztatni, hozzon létre egy BlobServiceClient-példányt. Az alábbi példa bemutatja, hogyan hozhat létre ügyfélobjektumot DefaultAzureCredential engedélyezés céljából:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

A szolgáltatásügyfél regisztrálható a függőséginjektáláshoz egy .NET-alkalmazásban.

Ügyfélobjektumokat is létrehozhat adott tárolókhoz vagy blobokhoz. Az ügyfélobjektumok létrehozásáról és kezeléséről további információt az adaterőforrásokat kezelő ügyfélobjektumok létrehozása és kezelése című témakörben talál.

Engedélyezés

Az engedélyezési mechanizmusnak rendelkeznie kell a tároló törléséhez vagy visszaállításához szükséges engedélyekkel. A Microsoft Entra-azonosítóval való engedélyezéshez (ajánlott) az Azure RBAC beépített szerepkörű Storage Blob Data Közreműködő vagy újabb szerepkörre van szüksége. További információkért tekintse meg a Tároló törlése (REST API) és a Rest API (Rest API) helyreállítására vonatkozó engedélyezési útmutatót.

Tároló törlése

Tároló törléséhez a .NET-ben használja az alábbi módszerek egyikét:

A Delete és a DeleteAsync metódus kivételt eredményez, ha a tároló nem létezik.

A DeleteIfExists és a DeleteIfExistsAsync metódus logikai értéket ad vissza, amely jelzi, hogy a tároló törölve lett-e. Ha a megadott tároló nem létezik, akkor ezek a metódusok hamis értéket adnak vissza, hogy jelezzék, hogy a tároló nem lett törölve.

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.

Az alábbi példa törli a megadott tárolót, és kezeli a kivételt, ha a tároló nem létezik:

//-------------------------------------------------
// Delete a container
//-------------------------------------------------
private static async Task DeleteSampleContainerAsync(BlobServiceClient blobServiceClient, string containerName)
{
    BlobContainerClient container = blobServiceClient.GetBlobContainerClient(containerName);

    try
    {
        // Delete the specified container and handle the exception.
        await container.DeleteAsync();
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine("HTTP error code {0}: {1}",
                            e.Status, e.ErrorCode);
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

Az alábbi példa bemutatja, hogyan törölheti az összes olyan tárolót, amely egy megadott előtaggal kezdődik.

//-------------------------------------------------
// Delete all containers with the specified prefix
//-------------------------------------------------
private static async Task DeleteContainersWithPrefixAsync(BlobServiceClient blobServiceClient, string prefix)
{
    Console.WriteLine("Delete all containers beginning with the specified prefix");

    try
    {
        foreach (BlobContainerItem container in blobServiceClient.GetBlobContainers())
        {
            if (container.Name.StartsWith(prefix))
            { 
                Console.WriteLine("\tContainer:" + container.Name);
                BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(container.Name);
                await containerClient.DeleteAsync();
            }
        }

        Console.WriteLine();
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

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íthatja a helyreállíthatóan törölt tárolót a BlobServiceClient osztály alábbi metódusainak meghívásával.

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 UndeleteBlobContainerAsync metódusnak a tároló visszaállításához.

public static async Task RestoreContainer(BlobServiceClient client, string containerName)
{
    await foreach (BlobContainerItem item in client.GetBlobContainersAsync
        (BlobContainerTraits.None, BlobContainerStates.Deleted))
    {
        if (item.Name == containerName && (item.IsDeleted == true))
        {
            try 
            { 
                await client.UndeleteBlobContainerAsync(containerName, item.VersionId);
            }
            catch (RequestFailedException e)
            {
                Console.WriteLine("HTTP error code {0}: {1}",
                e.Status, e.ErrorCode);
                Console.WriteLine(e.Message);
            }
        }
    }
}

Források

Ha többet szeretne megtudni egy tároló törléséről a .NET-hez 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

A .NET-hez készült Azure SDK 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 ismerős .NET-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:

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

Lásd még