Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini memperlihatkan cara menyalin blob dari URL objek sumber menggunakan modul klien Azure Storage untuk Go. Anda dapat menyalin blob dari sumber dalam akun penyimpanan yang sama, dari sumber di akun penyimpanan yang berbeda, atau dari objek yang dapat diakses yang diambil melalui permintaan HTTP GET pada URL tertentu.
Metode pustaka klien yang tercakup dalam artikel ini menggunakan operasi Put Blob From URL dan Put Block From URL REST API. Metode ini lebih disukai untuk skenario penyalinan tempat Anda ingin memindahkan data ke akun penyimpanan dan memiliki URL untuk objek sumber. Untuk operasi salin tempat Anda menginginkan penjadwalan asinkron, lihat Menyalin blob dengan penjadwalan asinkron menggunakan Go.
Prasyarat
- Langganan Azure - buat akun secara gratis
- Akun penyimpanan Azure - buat akun penyimpanan
- Go 1.18+
Atur 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 path import, dan membuat objek klien yang terotorisasi. 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
}
Otorisasi
Mekanisme otorisasi harus memiliki izin yang diperlukan untuk melakukan operasi penyalinan. 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 From URL atau Put Block From URL.
Tentang menyalin blob dari URL objek sumber
Operasi ini Put Blob From URL membuat blob blok baru tempat konten blob dibaca dari URL tertentu. Operasi selesai secara sinkron.
Sumbernya dapat berupa objek apa pun yang dapat diambil melalui permintaan HTTP GET standar pada URL yang diberikan. Ini termasuk blob blok, blob penambahan, blob halaman, cuplikan blob, versi blob, atau objek yang dapat diakses di dalam atau di luar Azure.
Ketika objek sumber adalah blob blok, semua konten blob yang diterapkan disalin. Konten blob tujuan identik dengan konten sumber, tetapi daftar blok yang dikomit tidak disimpan dan blok yang belum dikomit tidak disalin.
Tujuan selalu berupa blok blob, baik blok blob yang sudah ada maupun blok blob baru yang dibuat oleh operasi. Isi blob yang ada digantikan dengan isi blob baru.
Put Blob From URL Operasi selalu menyalin seluruh blob sumber. Menyalin rentang byte atau set blok tidak didukung. Untuk melakukan pembaruan parsial pada konten blob blok dengan menggunakan URL sumber, gunakan PUT Block From URL API bersama dengan Put Block List.
Untuk mempelajari selengkapnya tentang Put Blob From URL operasi ini, termasuk batasan ukuran blob dan pertimbangan penagihan, lihat Menempatkan komentar Blob From URL.
Menyalin blob dari URL objek sumber
Bagian ini memberikan gambaran umum metode yang disediakan oleh pustaka klien Azure Storage untuk Go untuk melakukan operasi salin dari URL objek sumber.
Metode berikut mengemas operasi REST API Put Blob From URL, dan membuat sebuah blok blob baru yang kontennya dibaca dari URL yang diberikan.
Metode ini lebih disukai untuk skenario di mana Anda ingin memindahkan data ke akun penyimpanan dan memiliki URL untuk objek sumber.
Untuk objek besar, Anda dapat memilih untuk bekerja dengan blok individual. Metode berikut membungkus operasi Put Block From URL REST API. Metode ini membuat blok baru yang akan diterapkan sebagai bagian dari blob tempat konten dibaca dari URL sumber:
Menyalin blob dari sumber dalam Azure
Jika Anda menyalin blob dari sumber dalam Azure, akses ke blob sumber dapat diotorisasi melalui ID Microsoft Entra (disarankan), tanda tangan akses bersama (SAS), atau kunci akun.
Contoh kode berikut menunjukkan skenario untuk menyalin blob sumber dalam Azure. Dalam contoh ini, kami juga mengatur tingkat akses untuk blob tujuan untuk Cool menggunakan struct UploadBlobFromURLOptions .
func copyFromSourceURL(srcBlob *blockblob.Client, destBlob *blockblob.Client) {
// Set copy options
copyOptions := blockblob.UploadBlobFromURLOptions{
Tier: to.Ptr(blob.AccessTierCool),
}
// Copy the blob from the source URL to the destination blob
_, err := destBlob.UploadBlobFromURL(context.TODO(), srcBlob.URL(), ©Options)
handleError(err)
}
Contoh berikut menunjukkan penggunaan sampel:
// TODO: replace <storage-account-name> placeholders with actual storage account names
srcURL := "https://<src-storage-account-name>.blob.core.windows.net/"
destURL := "https://<dest-storage-account-name>.blob.core.windows.net/"
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
srcClient, err := azblob.NewClient(srcURL, credential, nil)
handleError(err)
destClient, err := azblob.NewClient(destURL, credential, nil)
handleError(err)
srcBlob := srcClient.ServiceClient().NewContainerClient("source-container").NewBlockBlobClient("source-blob")
destBlob := destClient.ServiceClient().NewContainerClient("destination-container").NewBlockBlobClient("destination-blob-1")
copyFromSourceURL(srcBlob, destBlob)
Menyalin blob dari sumber di luar Azure
Anda dapat melakukan operasi salin pada objek sumber apa pun yang dapat diambil melalui permintaan HTTP GET pada URL tertentu, termasuk objek yang dapat diakses di luar Azure. Contoh kode berikut menunjukkan skenario untuk menyalin blob dari URL objek sumber yang dapat diakses.
func copyFromExternalSource(srcURL string, destBlob *blockblob.Client) {
// Set copy options
copyOptions := blockblob.UploadBlobFromURLOptions{
Tier: to.Ptr(blob.AccessTierCool),
}
// Copy the blob from the source URL to the destination blob
_, err := destBlob.UploadBlobFromURL(context.TODO(), srcURL, ©Options)
handleError(err)
}
Contoh berikut menunjukkan penggunaan sampel:
externalURL := "<source-url>"
destBlob = destClient.ServiceClient().NewContainerClient("destination-container").NewBlockBlobClient("destination-blob-2")
copyFromExternalSource(externalURL, destBlob)
Sumber
Untuk mempelajari selengkapnya tentang menyalin blob menggunakan pustaka 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 yang tercakup dalam artikel ini menggunakan operasi REST API berikut:
- Memasukkan Blob Dari URL (REST API)
- Simpan Blok Dari URL (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.