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.

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-pillanatképek használatá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 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álynak az Azure Storage-hoz való hozzáférés engedélyezésére szolgáló DefaultAzureCredential osztály használatával kapcsolatos további információkért tekintse meg a .NET-hez készült Azure Identity ügyfélkódtá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.

Blob és pillanatképeinek törléséhez használja az alábbi módszerek egyikét, és adja meg a DeleteSnapshotsOption enumerálást :

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 előléptethet egy pillanatképet az alapblobon, feltéve, hogy az alapblob online szinten van (gyakori vagy ritka elérésű). A pillanatkép megmarad, de a célhelyet felülírja egy olyan másolattal, amely olvasható és írható.

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

Források

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