Mengunggah blob blok dengan Go
Artikel ini memperlihatkan cara mengunggah blob menggunakan modul klien Azure Storage untuk Go. Anda dapat mengunggah data ke blob blok dari jalur file, aliran, objek biner, atau string teks. Anda juga dapat mengunggah blob dengan tag indeks.
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 mengunggah 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 Put Blob (REST API) dan Put Block (REST API).
Mengunggah data ke blob blok
Untuk mengunggah blob, panggil salah satu metode berikut dari objek klien:
Untuk melakukan unggahan, pustaka klien mungkin menggunakan Put Blob atau serangkaian panggilan Put Block diikuti oleh Put Block List
. Perilaku ini tergantung pada ukuran keseluruhan objek dan bagaimana opsi transfer data diatur.
Mengunggah blob blok dari jalur file lokal
Contoh berikut mengunggah file lokal ke blob blok:
func uploadBlobFile(client *azblob.Client, containerName string, blobName string) {
// Open the file for reading
file, err := os.OpenFile("path/to/sample/file", os.O_RDONLY, 0)
handleError(err)
defer file.Close()
// Upload the file to the specified container with the specified blob name
_, err = client.UploadFile(context.TODO(), containerName, blobName, file, nil)
handleError(err)
}
Mengunggah blob blok dari aliran
Contoh berikut membuat instans Reader
dan membaca dari string seolah-olah itu adalah aliran byte. Aliran kemudian diunggah ke blob blok:
func uploadBlobStream(client *azblob.Client, containerName string, blobName string) {
data := "Hello, world!"
blobContentReader := strings.NewReader(data)
// Upload the file to the specified container with the specified blob name
_, err := client.UploadStream(context.TODO(), containerName, blobName, blobContentReader, nil)
handleError(err)
}
Mengunggah data biner ke blob blok
Contoh berikut mengunggah data biner ke blob blok:
func uploadBlobBuffer(client *azblob.Client, containerName string, blobName string) {
// Create a buffer with the content of the file to upload
data := []byte("Hello, world!")
// Upload the data to a block blob
_, err := client.UploadBuffer(context.TODO(), containerName, blobName, data, nil)
handleError(err)
}
Mengunggah blob blok dengan tag indeks
Contoh berikut mengunggah blob blok dengan tag indeks:
func uploadBlobWithIndexTags(client *azblob.Client, containerName string, blobName string) {
// Create a buffer with the content of the file to upload
data := []byte("Hello, world!")
// Upload the data to a block blob with index tags
_, err := client.UploadBuffer(context.TODO(), containerName, blobName, data, &azblob.UploadBufferOptions{
Tags: map[string]string{
"key1": "value1",
"key2": "value2",
},
})
handleError(err)
}
Mengunggah blob blok dengan opsi konfigurasi
Anda dapat menentukan opsi konfigurasi pustaka klien saat mengunggah blob. Opsi ini dapat disetel untuk meningkatkan performa, meningkatkan keandalan, dan mengoptimalkan biaya. Contoh kode berikut menunjukkan cara menentukan opsi konfigurasi untuk operasi unggahan.
Tentukan opsi transfer data untuk diunggah
Anda dapat mengatur opsi konfigurasi saat mengunggah blob untuk mengoptimalkan performa. Opsi konfigurasi berikut tersedia untuk operasi unggahan:
BlockSize
: Ukuran setiap blok saat mengunggah blob blok. Nilai defaultnya adalah 4 MB.Concurrency
: Jumlah maksimum koneksi paralel yang akan digunakan selama pengunggahan. Nilai defaultnya adalah 5.
Opsi konfigurasi ini tersedia saat mengunggah menggunakan metode berikut:
Metode Unggah tidak mendukung opsi ini, dan mengunggah data dalam satu permintaan.
Untuk informasi selengkapnya tentang batas ukuran transfer untuk Blob Storage, lihat Menskalakan target untuk penyimpanan Blob.
Contoh kode berikut menunjukkan cara menentukan opsi transfer data menggunakan UploadFileOptions. Nilai yang disediakan dalam sampel ini tidak dimaksudkan untuk menjadi rekomendasi. Untuk menyetel nilai-nilai ini dengan benar, Anda perlu mempertimbangkan kebutuhan spesifik aplikasi Anda.
func uploadBlobWithTransferOptions(client *azblob.Client, containerName string, blobName string) {
// Open the file for reading
file, err := os.OpenFile("path/to/sample/file", os.O_RDONLY, 0)
handleError(err)
defer file.Close()
// Upload the data to a block blob with transfer options
_, err = client.UploadFile(context.TODO(), containerName, blobName, file,
&azblob.UploadFileOptions{
BlockSize: int64(4 * 1024 * 1024), // 4 MiB
Concurrency: uint16(2),
})
handleError(err)
}
Untuk mempelajari selengkapnya tentang menyetel opsi transfer data, lihat Penyetelan performa untuk pengunggahan dan unduhan dengan Go.
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 mengunggah blob 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 mengunggah blob menggunakan operasi REST API berikut:
- Memasukkan Blob (REST API)
- Put Block (REST API)
Sumber daya modul klien
Lihat juga
- Mengelola dan menemukan data Azure Blob dengan tag indeks blob
- Menggunakan tag indeks blob untuk mengelola dan menemukan data di Azure Blob Storage
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.