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


Blob törlése és visszaállítása .NET-tel

Ez a cikk bemutatja, hogyan törölhet blobokat a .NET-hez készült Azure Storage ügyfélkódtárral, és hogyan állíthatja vissza a helyreállíthatóan törölt blobokat a megőrzési időszak alatt.

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 blob törléséhez vagy a helyreállíthatóan törölt blob 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 Blob törlése (REST API) és az Undelete Blob (REST API) engedélyezési útmutatóját.

Blob törlése

Feljegyzés

Ha a blob helyreállítható törlése engedélyezve van egy tárfiókhoz, nem hajthat végre végleges törlést ügyfélkódtár-metódusokkal. A cikkben ismertetett módszerekkel a helyreállíthatóan törölt blobok, blobverziók vagy pillanatképek a megőrzési időszak lejártáig elérhetők maradnak, és ekkor véglegesen törlődnek. A mögöttes REST API-művelettel kapcsolatos további információkért lásd a Blob törlése (REST API) című témakört.

Blob törléséhez hívja meg az alábbi módszerek bármelyikét:

Az alábbi példa egy blobot töröl:

public static async Task DeleteBlobAsync(BlobClient blob)
{
    await blob.DeleteAsync();
}

Ha a blob rendelkezik társított pillanatképekkel, a blob törléséhez törölnie kell az összes pillanatképét. Az alábbi példa töröl egy blobot és annak pillanatképeit:

public static async Task DeleteBlobSnapshotsAsync(BlobClient blob)
{
    // Delete a blob and all of its snapshots
    await blob.DeleteAsync(snapshotsOption: DeleteSnapshotsOption.IncludeSnapshots);

    // Delete only the blob's snapshots
    //await blob.DeleteAsync(snapshotsOption: DeleteSnapshotsOption.OnlySnapshots);
}

Ha csak a pillanatképeket szeretné törölni, és magát a blobot nem, akkor átadhatja a paramétertDeleteSnapshotsOption.OnlySnapshots.

Törölt blob visszaállítása

A blob helyreállítható törlésével megóvhatja az egyéni blobokat és azok verzióit, pillanatképeit és metaadatait a véletlen törléstől és felülírástól, mivel ezzel a művelettel a rendszer egy meghatározott ideig még megőrzi a törölt adatokat. A megőrzési időszak alatt a blobot visszaállíthatja a törléskor érvényes állapotába. A megőrzési időszak lejárta után a blob véglegesen törlődik. A blobok helyreállítható törlésével kapcsolatos további információkért lásd a blobok helyreállítható törlését ismertető szakaszt.

Az Azure Storage-ügyfélkódtárak használatával helyreállíthatja a helyreállíthatóan törölt blobokat vagy pillanatképeket.

A helyreállíthatóan törölt blobok visszaállításának módjától függ, hogy a tárfiók engedélyezve van-e a blobok verziószámozása. A blobok verziószámozásával kapcsolatos további információkért lásd a Blob verziószámozását. A forgatókönyvtől függően tekintse meg az alábbi szakaszok egyikét:

Helyreállíthatóan törölt objektumok visszaállítása, ha a verziószámozás le van tiltva

A törölt blobok visszaállításához, ha a verziószámozás nincs engedélyezve, hívja meg az alábbi módszerek egyikét:

Ezek a metódusok helyreállítják a helyreállíthatóan törölt blobokat és a hozzájuk társított törölt pillanatképeket. A nem törölt blobok egyikének meghívása nincs hatással. Az alábbi példa visszaállítja a helyreállíthatóan törölt blobokat és azok pillanatképeit egy tárolóban:

public static async Task RestoreBlobsAsync(BlobContainerClient container)
{
    foreach (BlobItem blob in container.GetBlobs(BlobTraits.None, BlobStates.Deleted))
    {
        await container.GetBlockBlobClient(blob.Name).UndeleteAsync();
    }
}

Egy adott helyreállíthatóan törölt pillanatkép visszaállításához először hívja meg az Undelete vagy undeleteAsync parancsot az alapblobon, majd másolja a kívánt pillanatképet az alapblobra. Az alábbi példa visszaállít egy blokkblobot a legutóbb létrehozott pillanatképre:

public static async Task RestoreSnapshotsAsync(
    BlobContainerClient container,
    BlobClient blob)
{
    // Restore the deleted blob
    await blob.UndeleteAsync();

    // List blobs in this container that match prefix
    // Include snapshots in listing
    Pageable<BlobItem> blobItems = container.GetBlobs(
        BlobTraits.None,
        BlobStates.Snapshots,
        prefix: blob.Name);

    // Get the URI for the most recent snapshot
    BlobUriBuilder blobSnapshotUri = new BlobUriBuilder(blob.Uri)
    {
        Snapshot = blobItems
            .OrderByDescending(snapshot => snapshot.Snapshot)
            .ElementAtOrDefault(0)?.Snapshot
    };

    // Restore the most recent snapshot by copying it to the blob
    await blob.StartCopyFromUriAsync(blobSnapshotUri.ToUri());
}

Helyreállíthatóan törölt blobok visszaállítása a verziószámozás engedélyezésekor

Ha egy tárfiók úgy van konfigurálva, hogy engedélyezze a blobok verziószámozását, a blob törlésével a blob aktuális verziója lesz az előző verzió. Ha vissza szeretne állítani egy helyreállíthatóan törölt blobot, ha engedélyezve van a verziószámozás, másolja az előző verziót az alapblobba. Az alábbi módszerek bármelyikét használhatja:

Az alábbi példakód bemutatja, hogyan szerezheti be a törölt blob legújabb verzióját, és hogyan állíthatja vissza a legújabb verziót az alapblobba való másolással:

public static void RestoreBlobWithVersioning(
    BlobContainerClient container,
    BlobClient blob)
{
    // List blobs in this container that match prefix
    // Include versions in listing
    Pageable<BlobItem> blobItems = container.GetBlobs(
        BlobTraits.None,
        BlobStates.Version,
        prefix: blob.Name);

    // Get the URI for the most recent version
    BlobUriBuilder blobVersionUri = new BlobUriBuilder(blob.Uri)
    {
        VersionId = blobItems.
            OrderByDescending(version => version.VersionId).
            ElementAtOrDefault(0)?.VersionId
    };

    // Restore the most recently generated version by copying it to the base blob
    blob.StartCopyFromUri(blobVersionUri.ToUri());
}

Források

A blobok törléséről és a törölt blobok visszaállításáról a .NET-hez készült Azure Blob Storage ügyfélkódtár használatával az alábbi forrásokból tájékozódhat.

Kódminták

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 blobok törlésére és a törölt blobok 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