Bagikan melalui


Membuat dan mengelola rekam jepret blob dengan .NET

Salinan bayangan adalah versi baca-saja dari blob yang diambil pada suatu waktu. Artikel ini memperlihatkan cara membuat dan mengelola rekam jepret blob menggunakan pustaka klien Azure Storage untuk .NET.

Untuk informasi selengkapnya tentang rekam jepret blob di Azure Storage, lihat Rekam jepret blob.

Prasyarat

Menyiapkan lingkungan Anda

Jika Anda tidak memiliki proyek yang sudah ada, bagian ini menunjukkan kepada Anda cara menyiapkan proyek untuk bekerja dengan pustaka klien Azure Blob Storage untuk .NET. Langkah-langkahnya termasuk penginstalan paket, menambahkan arahan using , dan membuat objek klien resmi. Untuk detailnya, lihat Mulai menggunakan Azure Blob Storage dan .NET.

Memasang paket

Dari direktori proyek Anda, instal paket untuk pustaka klien Azure Blob Storage dan Azure Identity menggunakan dotnet add package perintah . Paket Azure.Identity diperlukan untuk koneksi tanpa kata sandi ke layanan Azure.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Tambahkan direktif using

Tambahkan arahan ini using ke bagian atas file kode Anda:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

Beberapa contoh kode dalam artikel ini mungkin memerlukan arahan tambahan using .

Membuat objek klien

Untuk menyambungkan aplikasi ke Blob Storage, buat instans BlobServiceClient. Contoh berikut menunjukkan cara membuat objek klien menggunakan DefaultAzureCredential untuk otorisasi:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

Anda dapat mendaftarkan klien layanan untuk injeksi dependensi di aplikasi .NET.

Anda juga dapat membuat objek klien untuk kontainer atau blob tertentu. Untuk mempelajari selengkapnya tentang membuat dan mengelola objek klien, lihat Membuat dan mengelola objek klien yang berinteraksi dengan sumber daya data.

Authorization

Mekanisme otorisasi harus memiliki izin yang diperlukan untuk bekerja dengan rekam jepret blob. Untuk otorisasi dengan MICROSOFT Entra ID (disarankan), Anda memerlukan peran bawaan Azure RBAC Kontributor Data Blob Penyimpanan atau yang lebih tinggi. Untuk mempelajari lebih lanjut, lihat panduan otorisasi untuk Snapshot Blob.

Membuat rekam jepret

Untuk membuat rekam jepret blob blok, gunakan salah satu metode berikut:

Contoh kode berikut menunjukkan cara membuat rekam jepret. Sertakan referensi ke pustaka Azure.Identity untuk menggunakan kredensial Microsoft Entra Anda untuk mengotorisasi permintaan ke layanan. Untuk informasi selengkapnya tentang menggunakan kelas DefaultAzureCredential untuk mengotorisasi identitas terkelola untuk mengakses Azure Storage, lihat pustaka klien Azure Identity untuk .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;
    }
}

Menghapus snapshot

Untuk menghapus blob, terlebih dahulu Anda harus menghapus rekam jepret dari blob itu. Anda dapat menghapus rekam jepret satu per satu, atau menentukan bahwa semua rekam jepret akan dihapus saat blob sumber dihapus. Jika Anda mencoba menghapus blob yang masih memiliki rekam jepret, kesalahan akan muncul.

Untuk menghapus blob dan rekam jepretnya, gunakan salah satu metode berikut, dan sertakan enum DeleteSnapshotsOption :

Contoh kode berikut menunjukkan cara menghapus blob dan rekam jepretnya di .NET, di mana blobClient merupakan objek jenis BlobClient:

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

Menyalin rekam jepret blob di atas blob dasar

Anda dapat melakukan operasi salin untuk mempromosikan rekam jepret melalui blob dasarnya, selama blob dasar berada di tingkat online (panas atau dingin). Rekam jepret tetap ada, tetapi tujuannya ditimpa dengan salinan yang dapat dibaca dan ditulis.

Contoh kode berikut menunjukkan cara menyalin rekam jepret blob melalui blob dasar:

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

Sumber

Untuk mempelajari selengkapnya tentang mengelola rekam jepret blob menggunakan pustaka klien Azure Blob Storage untuk .NET, lihat sumber daya berikut ini.

Untuk sampel kode terkait menggunakan .NET versi 11.x SDK yang tidak digunakan lagi, lihat Sampel kode menggunakan .NET versi 11.x.

Sumber daya pustaka klien

Lihat juga