Topik ini menjelaskan cara menambahkan parameter dalam permintaan unggah atau unduh objek untuk mengatur batas bandwidth unggah atau unduh, sehingga memastikan tersedianya bandwidth yang cukup bagi aplikasi lain.
Catatan penggunaan
Dalam topik ini digunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Regions and endpoints.
Kredensial akses dalam topik ini diperoleh dari variabel lingkungan. Untuk informasi selengkapnya mengenai cara mengonfigurasi kredensial akses, lihat Configure access credentials.
Instans OSSClient dalam topik ini dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Configure a client (Go SDK V1).
Kode contoh
Kode contoh berikut menunjukkan cara mengonfigurasi pembatasan bandwidth koneksi tunggal untuk unggah dan unduh sederhana:
package main
import (
"log"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir wilayah bucket. Misalnya, untuk wilayah China (Hangzhou), gunakan https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), gunakan cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
options := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
options = append(options, oss.Region("yourRegion"))
// Setel versi signature.
options = append(options, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", options...)
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Setel nama bucket. Misalnya, examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket '%s': %v", bucketName, err)
}
// Setel path lengkap file lokal yang akan diunggah. Misalnya, D:\\localpath\\examplefile.txt.
// Jika Anda tidak menentukan path lokal, file akan diunggah dari path lokal default proyek.
localFilePath := "D:\\localpath\\examplefile.txt"
fd, err := os.Open(localFilePath)
if err != nil {
log.Fatalf("Gagal membuka file lokal '%s': %v", localFilePath, err)
}
defer fd.Close()
// Setel batas kecepatan unggah. Nilainya berupa angka, dan satuan defaultnya adalah bit/s. Contoh ini menetapkan batas sebesar 5 MB/s.
var traffic int64 = 41943040
// Unggah file dengan pembatasan bandwidth.
// Setel path lengkap objek. Path lengkap tidak boleh mengandung nama bucket.
objectName := "exampledir/exampleobject.txt"
err = bucket.PutObject(objectName, fd, oss.TrafficLimitHeader(traffic))
if err != nil {
log.Fatalf("Gagal mengunggah objek '%s': %v", objectName, err)
}
// Unduh file dengan pembatasan bandwidth.
// Setel path lengkap objek (misalnya, exampledir/exampleobject.txt) dan path lengkap file lokal (misalnya, D:\\localpath\\exampleobject.txt). Path lengkap objek tidak boleh mengandung nama bucket.
downloadFilePath := "D:\\localpath\\exampleobject.txt"
err = bucket.GetObjectToFile(objectName, downloadFilePath, oss.TrafficLimitHeader(traffic))
if err != nil {
log.Fatalf("Gagal mengunduh objek '%s' ke '%s': %v", objectName, downloadFilePath, err)
}
log.Println("Unggah dan unduh berhasil diselesaikan")
}
Skenario
Referensi
Untuk informasi selengkapnya mengenai operasi API untuk mengunggah file, lihat PutObject.
Untuk informasi selengkapnya mengenai operasi API untuk mengunduh file, lihat GetObjectToFile.