Secara default, operasi GetObject hanya mengembalikan versi terkini objek dari bucket yang telah diaktifkan fitur Pengendalian versi.
Informasi latar belakang
Saat Anda memanggil operasi GetObject pada suatu bucket, salah satu dari tiga skenario berikut akan terjadi:
Jika versi terkini objek tersebut adalah penanda hapus, OSS mengembalikan respons 404 Not Found.
Jika Anda menentukan versionId objek dalam parameter kueri, versi yang ditentukan akan dikembalikan. Jika Anda mengatur versionId ke "null", versi objek yang memiliki versionId null akan dikembalikan.
Jika Anda mencoba mengambil penanda hapus dengan menentukan versionId-nya, OSS mengembalikan respons 405 Method Not Allowed.
Catatan penggunaan
Pada topik ini, titik akhir publik wilayah China (Hangzhou) digunakan. Jika Anda ingin 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 Wilayah dan titik akhir.
Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Konfigurasikan client (Go SDK V1).
Untuk mengunduh objek, Anda harus memiliki izin
oss:GetObject. Untuk informasi selengkapnya, lihat Lampirkan kebijakan kustom ke RAM user.
Kode contoh
Kode berikut memberikan contoh cara mengunduh file.
package main
import (
"log"
"net/http"
"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 diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Atur yourEndpoint ke Titik akhir bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), atur Titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Titik akhir sesuai kebutuhan.
// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayah sesuai kebutuhan.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Atur versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
log.Fatalf("Gagal membuat client OSS: %v", err)
}
// Atur yourBucketName ke nama bucket.
bucketName := "yourBucketName"
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket '%s': %v", bucketName, err)
}
var retHeader http.Header
// Unduh file versi yourObjectVersionId ke cache.
// Atur yourObjectName ke path lengkap objek. Path lengkap tidak mencakup nama bucket.
objectName := "yourObjectName"
objectVersionId := "yourObjectVersionId"
_, err = bucket.GetObject(objectName, oss.VersionId(objectVersionId), oss.GetResponseHeader(&retHeader))
if err != nil {
log.Fatalf("Gagal mendapatkan objek '%s' dengan ID versi '%s': %v", objectName, objectVersionId, err)
}
// Cetak x-oss-version-id.
versionId := oss.GetVersionId(retHeader)
log.Printf("x-oss-version-id: %s", versionId)
}
Referensi
Untuk kode contoh lengkap mengenai pengunduhan file, lihat contoh di GitHub.
Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk mengunduh file, lihat GetObject.