Bagikan melalui


Menghapus dan memulihkan blob dengan Go

Artikel ini memperlihatkan cara menghapus blob menggunakan modul klien Azure Storage untuk Go, dan cara memulihkan blob yang dihapus sementara selama periode retensi.

Prasyarat

Menyiapkan lingkungan Anda

Jika Anda tidak memiliki proyek yang sudah ada, bagian ini memperlihatkan cara menyiapkan proyek untuk bekerja dengan modul klien Azure Blob Storage untuk Go. Langkah-langkahnya termasuk penginstalan modul, menambahkan import jalur, dan membuat objek klien resmi. Untuk detailnya, lihat Mulai menggunakan Azure Blob Storage dan Go.

Menginstal modul

Instal modul azblob menggunakan perintah berikut:

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Untuk mengautentikasi dengan MICROSOFT Entra ID (disarankan), instal azidentity modul menggunakan perintah berikut:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Menambahkan jalur impor

Dalam file kode Anda, tambahkan jalur impor berikut:

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

Jalur impor ini mewakili minimum yang diperlukan untuk memulai. Beberapa contoh kode dalam artikel ini mungkin memerlukan jalur impor tambahan. Untuk detail tertentu dan contoh penggunaan, lihat Sampel kode.

Membuat objek klien

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

func getServiceClientTokenCredential(accountURL string) *azblob.Client {
    // Create a new service client with token credential
    credential, err := azidentity.NewDefaultAzureCredential(nil)
    handleError(err)

    client, err := azblob.NewClient(accountURL, credential, nil)
    handleError(err)

    return client
}

Authorization

Mekanisme otorisasi harus memiliki izin yang diperlukan untuk menghapus blob, atau untuk memulihkan blob yang dihapus sementara. 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 Hapus Blob (REST API) dan Batalkan Penghapusan Blob (REST API).

Hapus blob

Catatan

Saat penghapusan sementara blob diaktifkan untuk akun penyimpanan, Anda tidak dapat melakukan penghapusan permanen menggunakan metode pustaka klien. Menggunakan metode dalam artikel ini, blob, versi blob, atau rekam jepret yang dihapus sementara tetap tersedia sampai periode retensi berakhir, saat itu dihapus secara permanen. Untuk mempelajari selengkapnya tentang operasi REST API yang mendasar, lihat Menghapus Blob (REST API).

Untuk menghapus blob, panggil metode berikut:

Contoh berikut menghapus blob:

func deleteBlob(client *azblob.Client, containerName string, blobName string) {
    // Delete the blob
    _, err := client.DeleteBlob(context.TODO(), containerName, blobName, nil)
    handleError(err)
}

Jika blob memiliki rekam jepret terkait, Anda harus menghapus semua rekam jepretnya untuk menghapus blob. Contoh berikut menghapus blob dan rekam jepretnya:

func deleteBlobWithSnapshots(client *azblob.Client, containerName string, blobName string) {
    // Delete the blob and its snapshots
    _, err := client.DeleteBlob(context.TODO(), containerName, blobName, &blob.DeleteOptions{
        DeleteSnapshots: to.Ptr(blob.DeleteSnapshotsOptionTypeInclude),
    })
    handleError(err)
}

Untuk menghapus hanya rekam jepret dan bukan blob itu sendiri, Anda dapat meneruskan nilai DeleteSnapshotsOptionTypeOnly ke DeleteSnapshots parameter .

Memulihkan blob yang dihapus

Penghapusan sementara blob melindungi blob individu dan versi, rekam jepret, serta metadatanya dari penghapusan atau penimpaan yang tidak disengaja dengan mempertahankan data yang dihapus dalam sistem selama jangka waktu tertentu. Selama periode retensi, Anda dapat memulihkan blob ke statusnya saat penghapusan. Setelah periode retensi kedaluwarsa, blob akan dihapus secara permanen. Untuk informasi selengkapnya tentang penghapusan sementara blob, lihat Penghapusan sementara untuk blob.

Anda dapat menggunakan pustaka klien Azure Storage untuk memulihkan blob atau rekam jepret yang dihapus untuk sementara.

Cara Anda memulihkan blob yang dihapus sementara tergantung pada apakah akun penyimpanan Anda mengaktifkan penerapan versi blob atau tidak. Untuk informasi selengkapnya tentang penerapan versi blob, lihat Penerapan versi blob. Lihat salah satu bagian berikut, bergantung pada skenario Anda:

Memulihkan objek yang dihapus untuk sementara saat penerapan versi dinonaktifkan

Untuk memulihkan blob yang dihapus saat penerapan versi dinonaktifkan, panggil metode berikut:

Metode ini memulihkan konten dan metadata blob yang dihapus sementara dan rekam jepret yang dihapus sementara terkait. Memanggil metode ini untuk blob yang belum dihapus tidak berpengaruh.

func restoreDeletedBlob(client *azblob.Client, containerName string, blobName string) {
    // Reference the blob as a client object
    blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    // Restore the deleted blob
    _, err := blobClient.Undelete(context.TODO(), &blob.UndeleteOptions{})
    handleError(err)
}

Memulihkan objek yang dihapus sementara saat penerapan versi diaktifkan

Jika akun penyimpanan dikonfigurasi untuk mengaktifkan penerapan versi blob, menghapus blob menyebabkan versi blob saat ini menjadi versi sebelumnya. Untuk memulihkan blob yang dihapus sementara saat penerapan versi diaktifkan, salin versi sebelumnya ke blob dasar. Anda dapat menggunakan metode berikut:

Contoh kode berikut mengidentifikasi versi blob yang dihapus, dan memulihkan versi tersebut dengan menyalinnya ke blob dasar:

func restoreDeletedBlobVersion(client *azblob.Client, containerName string, blobName string, versionID string) {
    // Reference the blob as a client object
    baseBlobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    blobVersionClient, err := baseBlobClient.WithVersionID(versionID)
    handleError(err)

    // Restore the blob version by copying it to the base blob
    _, err = baseBlobClient.StartCopyFromURL(context.TODO(), blobVersionClient.URL(), nil)
    handleError(err)
}

Catatan

Sampel kode dalam panduan ini dimaksudkan untuk membantu Anda mulai menggunakan Azure Blob Storage dan Go. Anda harus mengubah penanganan kesalahan dan Context nilai untuk memenuhi kebutuhan aplikasi Anda.

Sumber

Untuk mempelajari selengkapnya tentang cara menghapus blob dan memulihkan blob yang dihapus menggunakan modul klien Azure Blob Storage untuk Go, lihat sumber daya berikut.

Sampel kode

  • Menampilkan sampel kode dari artikel ini (GitHub)

Operasi REST API

Azure SDK for Go berisi pustaka yang dibangun di atas Azure REST API, memungkinkan Anda berinteraksi dengan operasi REST API melalui paradigma Go yang sudah dikenal. Metode pustaka klien untuk menghapus blob dan memulihkan blob yang dihapus menggunakan operasi REST API berikut:

Sumber daya modul klien

Lihat juga

  • Artikel ini adalah bagian dari panduan pengembang Blob Storage untuk Go. Untuk mempelajari lebih lanjut, lihat daftar lengkap artikel panduan pengembang di Membangun aplikasi Go Anda.