Mengelola properti blob dan metadata dengan Go
Selain data yang dikandungnya, blob mendukung properti sistem dan metadata yang ditentukan pengguna. Artikel ini memperlihatkan cara mengelola properti sistem dan metadata yang ditentukan pengguna menggunakan modul klien Azure Storage untuk Go.
Prasyarat
- Langganan Azure - buat akun secara gratis
- Akun penyimpanan Azure - buat akun penyimpanan
- Go 1.18+
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 bekerja dengan properti kontainer atau metadata. Untuk otorisasi dengan MICROSOFT Entra ID (disarankan), Anda memerlukan peran bawaan Azure RBAC Storage Blob Data Reader atau yang lebih tinggi untuk operasi get , dan Storage Blob Data Contributor atau yang lebih tinggi untuk operasi yang ditetapkan . Untuk mempelajari lebih lanjut, lihat panduan otorisasi untuk Mengatur Properti Blob (REST API), Dapatkan Properti Blob (REST API), Atur Metadata Blob (REST API), atau Dapatkan Metadata Blob (REST API).
Tentang properti dan metadata
Properti sistem: Properti sistem ada di setiap sumber daya penyimpanan Blob. Beberapa dari mereka dapat dibaca atau diatur, sementara yang lain baca-saja. Di bawah sampul, beberapa properti sistem sesuai dengan header HTTP standar tertentu. Pustaka klien Azure Storage untuk Go mempertahankan properti ini untuk Anda.
Metadata yang ditentukan pengguna: Metadata yang ditentukan pengguna terdiri dari satu atau beberapa pasangan nama-nilai yang Anda tentukan untuk sumber daya penyimpanan Blob. Anda dapat menggunakan metadata untuk menyimpan nilai tambahan dengan sumber daya. Nilai metadata hanya untuk tujuan Anda sendiri, dan tidak memengaruhi perilaku sumber daya.
Pasangan nama/nilai metadata adalah header HTTP yang valid dan harus mematuhi semua batasan yang mengatur header HTTP. Untuk informasi selengkapnya tentang persyaratan penamaan metadata, lihat Nama metadata.
Catatan
Tag indeks blob juga menyediakan kemampuan untuk menyimpan atribut kunci/nilai yang ditentukan pengguna bersama sumber daya penyimpanan Azure Blob. Meskipun mirip dengan metadata, hanya tag indeks blob yang secara otomatis diindeks dan dibuat dapat dicari oleh layanan blob asli. Metadata tidak dapat diindeks dan dikueri kecuali Anda menggunakan layanan terpisah seperti Azure Search.
Untuk mempelajari fitur ini selengkapnya, lihat Kelola dan temukan data di penyimpanan Azure Blob dengan indeks blob (pratinjau).
Atur dan ambil properti
Untuk mengatur properti pada blob, panggil metode berikut dari objek klien blob:
Properti apa pun yang tidak disetel secara eksplisit akan dibersihkan. Untuk mempertahankan properti yang ada, Anda dapat terlebih dahulu mengambil properti blob, lalu menggunakannya untuk mengisi header yang tidak sedang diperbarui.
Contoh kode berikut mengatur BlobContentType
properti sistem dan BlobContentLanguage
pada blob, sambil mempertahankan properti yang ada:
func setBlobProperties(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the existing blob properties
resp, err := blobClient.GetProperties(context.TODO(), nil)
handleError(err)
// Set the new blob properties and include existing properties
_, err = blobClient.SetHTTPHeaders(context.TODO(), blob.HTTPHeaders{
BlobContentType: to.Ptr("text/plain"),
BlobContentLanguage: to.Ptr("en-us"),
BlobContentEncoding: resp.ContentEncoding,
BlobContentDisposition: resp.ContentDisposition,
BlobCacheControl: resp.CacheControl,
}, nil)
handleError(err)
}
Untuk mengambil properti pada blob, panggil metode berikut dari objek klien blob:
Contoh kode berikut mendapatkan properti sistem blob dan menampilkan beberapa nilai:
func getBlobProperties(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the blob properties
resp, err := blobClient.GetProperties(context.TODO(), nil)
handleError(err)
// Print the blob properties
fmt.Printf("Content type: %v\n", *resp.ContentType)
fmt.Printf("Content language: %v\n", *resp.ContentLanguage)
}
Atur dan ambil metadata
Anda dapat menentukan metadata sebagai satu atau beberapa pasangan nama-nilai pada sumber daya blob atau kontainer. Untuk mengatur metadata, kirim peta yang berisi pasangan nama-nilai menggunakan metode berikut dari objek klien blob:
Contoh kode berikut menetapkan metadata pada blob:
func setBlobMetadata(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Set the blob metadata
var metadata = make(map[string]*string)
metadata["key1"] = to.Ptr("value1")
metadata["key2"] = to.Ptr("value2")
_, err := blobClient.SetMetadata(context.TODO(), metadata, nil)
handleError(err)
}
Untuk mengambil metadata, panggil metode GetProperties dari objek klien blob, dan akses Metadata
bidang dalam respons. Metode ini GetProperties
mengambil properti blob dan metadata dengan memanggil operasi Dapatkan Properti Blob dan operasi Dapatkan Metadata Blob.
Contoh kode berikut membaca metadata pada blob dan mencetak setiap pasangan kunci/nilai:
func getBlobMetadata(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the blob properties, which includes metadata
resp, err := blobClient.GetProperties(context.TODO(), nil)
handleError(err)
// Print the blob metadata
for k, v := range resp.Metadata {
fmt.Printf("%v: %v\n", k, *v)
}
}
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 mengelola properti sistem dan metadata yang ditentukan pengguna menggunakan modul klien Azure Blob Storage untuk Go, lihat sumber daya berikut ini.
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 mengelola properti sistem dan metadata yang ditentukan pengguna menggunakan operasi REST API berikut:
- Mengatur Properti Blob (REST API)
- Dapatkan Properti Blob (REST API)
- Mengatur Metadata Blob (REST API)
- Dapatkan Metadata Blob (REST API)
Sumber daya modul klien
Konten terkait
- 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.