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

  • Ez a cikk feltételezi, hogy már rendelkezik egy projekttel, amely az Azure Blob Storage .NET-hez készült ügyfélkódtárával dolgozik. A projekt beállításával, beleértve a csomagtelepítést, az irányelvek hozzáadását using és egy engedélyezett ügyfélobjektum létrehozását, olvassa el az Azure Blob Storage és a .NET használatának első lépéseit.
  • Az engedélyezési mechanizmusnak rendelkeznie kell a blob-pillanatképek használatához szükséges engedélyekkel. További információkért tekintse meg az alábbi REST API-művelet 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

Kapcsolódó információk