Setelah mengunggah objek ke bucket, Object Storage Service (OSS) secara otomatis menghasilkan URL yang mencakup titik akhir publik bucket untuk objek tersebut. Anda dapat menggunakan URL ini untuk mengakses objek. Jika ingin mengakses objek menggunakan nama domain kustom, tambahkan Record CNAME untuk memetakan nama domain kustom ke bucket tempat objek disimpan.
Catatan
Kode contoh dalam topik ini menggunakan ID wilayah
cn-hangzhoudari Wilayah Hangzhou, Tiongkok. Secara default, titik akhir publik digunakan untuk mengakses sumber daya dalam bucket. Jika Anda ingin mengakses sumber daya dalam bucket dengan menggunakan layanan Alibaba Cloud lainnya di wilayah yang sama dengan lokasi bucket, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh Object Storage Service (OSS), lihat Wilayah dan Titik Akhir OSS.Dalam topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses.
Kode contoh
Buat token CNAME
Berikut adalah contoh kode untuk membuat token CNAME.
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Parsing parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket telah ditentukan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah telah ditentukan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Buat permintaan untuk membuat token CNAME.
request := &oss.CreateCnameTokenRequest{
Bucket: oss.Ptr(bucketName),
BucketCnameConfiguration: &oss.BucketCnameConfiguration{
Domain: oss.Ptr("www.example.com"), // Tentukan nama domain kustom.
},
}
// Lakukan operasi untuk membuat token CNAME.
result, err := client.CreateCnameToken(context.TODO(), request)
if err != nil {
log.Fatalf("gagal membuat token cname bucket %v", err)
}
// Tampilkan informasi tentang token CNAME.
log.Printf("Cname: %s", *result.CnameToken.Cname)
log.Printf("Token: %s", *result.CnameToken.Token)
log.Printf("ExpireTime: %s", *result.CnameToken.ExpireTime)
}
Kueri token CNAME
Berikut adalah contoh kode untuk menanyakan token CNAME.
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Parsing parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket telah ditentukan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah telah ditentukan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Buat permintaan untuk menanyakan token CNAME yang dipetakan ke bucket.
request := &oss.GetCnameTokenRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
Cname: oss.Ptr("www.example.com"), // Tentukan nama domain kustom.
}
// Lakukan operasi penanyaaan.
result, err := client.GetCnameToken(context.TODO(), request)
if err != nil {
log.Fatalf("gagal mendapatkan token cname bucket %v", err)
}
// Tampilkan informasi tentang token CNAME.
log.Printf("Cname: %s", result.CnameToken.Cname)
log.Printf("Token: %s", result.CnameToken.Token)
log.Printf("ExpireTime: %s", result.CnameToken.ExpireTime)
}
Tambahkan record CNAME
Petakan nama domain kustom
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Parsing parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket telah ditentukan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah telah ditentukan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Buat permintaan untuk menambahkan record CNAME.
request := &oss.PutCnameRequest{
Bucket: oss.Ptr(bucketName),
BucketCnameConfiguration: &oss.BucketCnameConfiguration{
Domain: oss.Ptr("www.example.com"), // Tentukan nama domain kustom.
},
}
// Eksekusi permintaan.
result, err := client.PutCname(context.TODO(), request)
if err != nil {
log.Fatalf("gagal menambahkan cname bucket %v", err)
}
// Tampilkan hasilnya.
log.Printf("hasil tambah cname bucket:%#v\n", result)
}
Petakan nama domain kustom dan asosiasikan sertifikat dengan nama domain
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Parsing parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket telah ditentukan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah telah ditentukan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Buat permintaan untuk memetakan nama domain kustom dan mengasosiasikan sertifikat dengan nama domain.
request := &oss.PutCnameRequest{
Bucket: oss.Ptr(bucketName),
BucketCnameConfiguration: &oss.BucketCnameConfiguration{
Domain: oss.Ptr("www.example.com"), // Tentukan nama domain kustom.
CertificateConfiguration: &oss.CertificateConfiguration{
CertId: oss.Ptr("92******-cn-hangzhou"),
Certificate: oss.Ptr("-----BEGIN CERTIFICATE-----MIIFBzCCA++gT2H2hT6Wb3nwxjpLIfXmSVcV*****-----END CERT"),
PrivateKey: oss.Ptr("-----BEGIN CERTIFICATE-----MIIFBzCCA++gT2H2hT6Wb3nwxjpLIfXmSVcV*****-----END CERTIFICATE-----"),
Force: oss.Ptr(true),
},
},
}
// Eksekusi permintaan.
result, err := client.PutCname(context.TODO(), request)
if err != nil {
log.Fatalf("gagal menambahkan cname bucket %v", err)
}
// Tampilkan hasilnya.
log.Printf("hasil tambah cname bucket:%#v\n", result)
}
Hapus asosiasi sertifikat
Jika tidak ingin nama domain terus menggunakan sertifikat, Anda dapat menghapus asosiasi sertifikat.
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Parsing parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket telah ditentukan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah telah ditentukan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Buat permintaan untuk menghapus asosiasi sertifikat.
request := &oss.PutCnameRequest{
Bucket: oss.Ptr(bucketName),
BucketCnameConfiguration: &oss.BucketCnameConfiguration{
Domain: oss.Ptr("www.example.com"), // Tentukan nama domain kustom.
CertificateConfiguration: &oss.CertificateConfiguration{
DeleteCertificate: oss.Ptr(true), // Hapus asosiasi sertifikat.
},
},
}
// Eksekusi permintaan untuk menghapus asosiasi sertifikat.
result, err := client.PutCname(context.TODO(), request)
if err != nil {
log.Fatalf("gagal menambahkan cname bucket %v", err)
}
// Tampilkan hasilnya.
log.Printf("hasil tambah cname bucket:%#v\n", result)
}
Daftar record CNAME
Berikut adalah contoh kode untuk mendaftarkan record CNAME yang dipetakan ke bucket.
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Parsing parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket telah ditentukan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah telah ditentukan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Buat permintaan untuk mendaftarkan record CNAME yang dipetakan ke bucket.
request := &oss.ListCnameRequest{
Bucket: oss.Ptr(bucketName),
}
// Eksekusi permintaan untuk mendaftarkan record CNAME.
result, err := client.ListCname(context.TODO(), request)
if err != nil {
log.Fatalf("gagal mendaftarkan cname bucket %v", err)
}
log.Printf("Bucket: %s", result.Bucket)
log.Printf("Owner: %s", result.Owner)
if len(result.Cnames) > 0 {
for _, cnameInfo := range result.Cnames {
// Tampilkan nama domain kustom.
log.Printf("Domain: %s", cnameInfo.Domain)
// Tampilkan waktu ketika nama domain kustom dipetakan ke bucket.
log.Printf("LastModified: %s", cnameInfo.LastModified)
// Tampilkan status nama domain.
log.Printf("Status: %s", cnameInfo.Status)
}
}
}
Hapus record CNAME
Berikut adalah contoh kode untuk menghapus record CNAME.
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Parsing parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket telah ditentukan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah telah ditentukan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Buat permintaan untuk menghapus record CNAME yang dipetakan ke bucket.
request := &oss.DeleteCnameRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
BucketCnameConfiguration: &oss.BucketCnameConfiguration{
Domain: oss.Ptr("www.example.com"), // Tentukan nama domain kustom.
},
}
// Eksekusi operasi untuk menghapus record CNAME.
result, err := client.DeleteCname(context.TODO(), request)
if err != nil {
log.Fatalf("gagal menghapus cname bucket %v", err)
}
// Tampilkan hasilnya.
log.Printf("hasil hapus cname bucket:%#v\n", result)
}
Referensi
Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk membuat token CNAME guna memverifikasi kepemilikan nama domain, lihat CreateCnameToken.
Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menanyakan token CNAME, lihat GetCnameToken.
Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menambahkan record CNAME ke bucket, lihat PutCname.
Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menanyakan record CNAME yang dipetakan ke bucket, lihat ListCname.
Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menghapus record CNAME yang dipetakan ke bucket, lihat DeleteCname.