Erstellen und Verwalten einer Blobmomentaufnahme in .NET

Eine Momentaufnahme ist eine schreibgeschützte Version eines Blobs, die zu einem bestimmten Zeitpunkt erstellt wird. In diesem Artikel wird die Erstellung und Verwaltung von Blobmomentaufnahmen unter Verwendung der Azure Storage-Clientbibliothek für .NET beschrieben.

Weitere Informationen zu Blobmomentaufnahmen in Azure Storage finden Sie unter Blobmomentaufnahmen.

Erstellen einer Momentaufnahme

Verwenden Sie eine der folgenden Methoden, um eine Momentaufnahme eines Blockblobs mit Version 12.x der Azure Storage-Clientbibliothek für .NETzu erstellen:

Das folgende Codebeispiel zeigt, wie Sie eine Momentaufnahme mit Version 12.x erstellen. Schließen Sie einen Verweis auf die Azure.Identity-Bibliothek ein, um Ihre Azure AD-Anmeldeinformationen zu verwenden, um Anforderungen an den Dienst zu autorisieren. Weitere Informationen zur Verwendung der Klasse DefaultAzureCredential zum Autorisieren einer verwalteten Identität für den Zugriff auf Azure Storage finden Sie unter Azure Identity-Clientbibliothek für .NET.

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

Löschen von Momentaufnahmen

Wenn Sie ein Blob löschen möchten, müssen Sie zunächst alle Momentaufnahmen dieses Blobs löschen. Sie können eine Momentaufnahme einzeln löschen oder angeben, dass alle Momentaufnahmen gelöscht werden sollen, wenn das Quellblob gelöscht wird. Wenn Sie versuchen, ein Blob zu löschen, für das noch Momentaufnahmen vorhanden sind, tritt ein Fehler auf.

Zum Löschen eines Blobs und seiner Momentaufnahmen mit Version 12.x der Azure Storage-Clientbibliothek für .NET verwenden Sie eine der folgenden Methoden und binden die DeleteSnapshotsOption-Enumeration ein:

Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein Blob und die zugehörigen Momentaufnahmen in .NET löschen, wenn blobClient ein Objekt vom Typ BlobClient ist:

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

Nächste Schritte