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


Blob-pillanatkép létrehozása és kezelése a .NET-tel

A pillanatkép egy adott időpontban készített blob írásvédett verziója. Ez a cikk bemutatja, hogyan hozhat létre és kezelhet blob pillanatképeket a .NET-hez készült Azure Storage-ügyfélkódtár használatával.

Az Azure Storage blob pillanatképeiről további információt a Blob-pillanatképek című témakörben talál.

Prerequisites

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

Adj hozzá using irányelveket

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

Regisztrálhat egy klienst függőség-injektá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.

Authorization

Az engedélyezési mechanizmusnak rendelkeznie kell a blob-pillanatképek használatához szükséges engedélyekkel. A Microsoft Entra-azonosítóval történő engedélyezéshez (ajánlott) szüksége van az Azure RBAC beépített szerepköreinek egyikére, például a Storage Blob Data közreműködő vagy annál magasabb szintű szerepkörre. További információkért tekintse meg a Snapshot Blob engedélyezési útmutatóját.

Pillanatkép létrehozása

Blokkblob pillanatképének létrehozásához használja az alábbi módszerek egyikét:

Az alábbi példakód bemutatja, hogyan hozhat létre pillanatképet. Adjon meg egy hivatkozást az Azure.Identity-kódtárra , hogy a Microsoft Entra hitelesítő adataival engedélyezze a szolgáltatásra irányuló kérelmeket. A DefaultAzureCredential osztály használatával kapcsolatos további információkért az Azure Storage-hoz való hozzáférés engedélyezésére, tekintse meg a .NET-hez készült Azure Identity ügyfélkönyvtárat.

private static async Task CreateBlockBlobSnapshot(
    string accountName,
    string containerName, 
    string blobName,
    Stream data)
{
    const string blobServiceEndpointSuffix = ".blob.core.windows.net";
    Uri containerUri = 
        new Uri("https://" + accountName + blobServiceEndpointSuffix + "/" + containerName);

    // Get a container client object and create the container.
    BlobContainerClient containerClient = new BlobContainerClient(containerUri,
        new DefaultAzureCredential());
    await containerClient.CreateIfNotExistsAsync();

    // Get a blob client object.
    BlobClient blobClient = containerClient.GetBlobClient(blobName);

    try
    {
        // Upload text to create a block blob.
        await blobClient.UploadAsync(data);

        // Add blob metadata.
        IDictionary<string, string> metadata = new Dictionary<string, string>
        {
            { "ApproxBlobCreatedDate", DateTime.UtcNow.ToString() },
            { "FileType", "text" }
        };
        await blobClient.SetMetadataAsync(metadata);

        // Sleep 5 seconds.
        System.Threading.Thread.Sleep(5000);

        // Create a snapshot of the base blob.
        // You can specify metadata at the time that the snapshot is created.
        // If no metadata is specified, then the blob's metadata is copied to the snapshot.
        await blobClient.CreateSnapshotAsync();
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

Pillanatképek törlése

Blob törléséhez először törölnie kell a blob pillanatképeit. Egyesével törölheti a pillanatképeket, vagy megadhatja, hogy a forrásblob törlésekor az összes pillanatkép törölve legyen. Ha egy olyan blobot próbál törölni, amely továbbra is rendelkezik pillanatképekkel, hibaüzenet jelenik meg.

A blob és annak pillanatképeinek törléséhez használja az alábbi módszerek egyikét, és adja meg a DeleteSnapshotsOption enumerációt.

Az alábbi példakód bemutatja, hogyan törölhet egy blobot és annak pillanatképeit a .NET-ben, ahol blobClient egy BlobClient típusú objektum található:

await blobClient.DeleteIfExistsAsync(DeleteSnapshotsOption.IncludeSnapshots, null, default);

Blob-pillanatkép másolása az alapblobra

Másolási művelettel egy pillanatképet alapblobjává tehet, feltéve, hogy az alapblob online tárolási rétegben van (gyakori vagy ritka elérésű). A pillanatkép megmarad, de a célhely újraíródik egy olvasható és írható másolattal.

Az alábbi példakód bemutatja, hogyan másolhat blob pillanatképet az alapblobra:

public static async Task<BlockBlobClient> CopySnapshotOverBaseBlobAsync(
    BlockBlobClient client,
    string snapshotTimestamp)
{
    // Instantiate BlockBlobClient with identical URI and add snapshot timestamp
    BlockBlobClient snapshotClient = client.WithSnapshot(snapshotTimestamp);

    // Restore the specified snapshot by copying it over the base blob
    await client.SyncUploadFromUriAsync(snapshotClient.Uri, overwrite: true);

    // Return the client object after the copy operation
    return client;
}

Resources

Ha többet szeretne megtudni a blob pillanatképeinek az Azure Blob Storage .NET-hez készült ügyfélkódtárával való kezeléséről, tekintse meg az alábbi erőforrásokat.

Az elavult .NET 11.x SDK-kkal kapcsolatos kódmintákért lásd a .NET 11.x verzióját használó kódmintákat.

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

Lásd még