All Products
Search
Document Center

Object Storage Service:Memetakan nama domain kustom (Go SDK V2)

Last Updated:Apr 03, 2026

Setelah mengunggah objek ke bucket, Object Storage Service (OSS) secara otomatis menghasilkan URL untuk objek tersebut. Anda dapat mengakses objek tersebut melalui URL-nya yang berisi titik akhir publik bucket. Untuk mengakses objek menggunakan nama domain kustom, tambahkan record CNAME guna memetakan nama domain kustom ke bucket.

Catatan

  • Kode contoh menggunakan ID wilayah cn-hangzhou untuk wilayah China (Hangzhou). Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan bucket Anda, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik Akhir.

  • Contoh dalam topik ini membaca kredensial akses dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Mengonfigurasi kredensial akses (Go SDK V1).

Kode contoh

Membuat token CNAME

Gunakan kode berikut 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"
)

// Definisikan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi flag command line.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing flag command line.
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

	// Periksa apakah wilayah telah diberikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah wajib diisi")
	}

	// Muat konfigurasi default, lalu atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat client OSS.
	client := oss.NewClient(cfg)

	// Buat token CNAME.
	request := &oss.CreateCnameTokenRequest{
		Bucket: oss.Ptr(bucketName),
		BucketCnameConfiguration: &oss.BucketCnameConfiguration{
			Cname: &oss.Cname{
				Domain: oss.Ptr("www.example.com"), // Tentukan nama domain kustom.
			},
		},
	}

	// Eksekusi permintaan untuk membuat token CNAME.
	result, err := client.CreateCnameToken(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal membuat token cname bucket %v", err)
	}

	// Cetak informasi token CNAME.
	log.Printf("Cname: %s", *result.CnameToken.Cname)
	log.Printf("Token: %s", *result.CnameToken.Token)
	log.Printf("ExpireTime: %s", *result.CnameToken.ExpireTime)
}

Mendapatkan token CNAME

Gunakan kode berikut untuk mendapatkan 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"
)

// Definisikan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi flag command line.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing flag command line.
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

	// Periksa apakah wilayah telah diberikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah wajib diisi")
	}

	// Muat konfigurasi default, lalu atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat client OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk mendapatkan token CNAME bucket.
	request := &oss.GetCnameTokenRequest{
		Bucket: oss.Ptr(bucketName),        // Nama bucket.
		Cname:  oss.Ptr("www.example.com"), // Tentukan nama domain kustom.
	}

	// Eksekusi permintaan untuk mendapatkan token CNAME.
	result, err := client.GetCnameToken(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal mendapatkan token cname bucket %v", err)
	}

	// Cetak informasi token CNAME.
	log.Printf("Cname: %s", result.CnameToken.Cname)
	log.Printf("Token: %s", result.CnameToken.Token)
	log.Printf("ExpireTime: %s", result.CnameToken.ExpireTime)
}

Menambahkan record CNAME

Pemetaan 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"
)

// Definisikan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi flag command line.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing flag command line.
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

	// Periksa apakah wilayah telah diberikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah wajib diisi")
	}

	// Muat konfigurasi default, lalu atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat client OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk menambahkan record CNAME bucket.
	request := &oss.PutCnameRequest{
		Bucket: oss.Ptr(bucketName),
		BucketCnameConfiguration: &oss.BucketCnameConfiguration{
			Cname: &oss.Cname{
				Domain: oss.Ptr("www.example.com"), // Tentukan nama domain kustom.
			},
		},
	}

	// Eksekusi permintaan untuk menambahkan record CNAME.
	result, err := client.PutCname(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menambahkan cname bucket %v", err)
	}

	// Cetak hasilnya.
	log.Printf("put bucket cname result:%#v\n", result)
}

Pemetaan domain dan 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"
)

// Definisikan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi flag command line.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing flag command line.
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

	// Periksa apakah wilayah telah diberikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah wajib diisi")
	}

	// Muat konfigurasi default, lalu atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat client OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk memetakan nama domain kustom dan mengaitkan sertifikat.
	request := &oss.PutCnameRequest{
		Bucket: oss.Ptr(bucketName),
		BucketCnameConfiguration: &oss.BucketCnameConfiguration{
			Cname: &oss.Cname{
				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)
	}

	// Cetak hasilnya.
	log.Printf("put bucket cname result:%#v\n", result)
}

Melepaskan sertifikat

Jika Anda tidak lagi memerlukan sertifikat untuk nama domain tersebut, Anda dapat melepaskannya.

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"
)

// Definisikan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi flag command line.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing flag command line.
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

	// Periksa apakah wilayah telah diberikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah wajib diisi")
	}

	// Muat konfigurasi default, lalu atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat client OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk melepaskan sertifikat.
	request := &oss.PutCnameRequest{
		Bucket: oss.Ptr(bucketName),
		BucketCnameConfiguration: &oss.BucketCnameConfiguration{
			Cname: &oss.Cname{
				Domain: oss.Ptr("www.example.com"), // Tentukan nama domain kustom.
				CertificateConfiguration: &oss.CertificateConfiguration{
					DeleteCertificate: oss.Ptr(true), // Melepaskan sertifikat.
				},
			},
		},
	}

	// Eksekusi permintaan untuk melepaskan sertifikat.
	result, err := client.PutCname(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menambahkan cname bucket %v", err)
	}

	// Cetak hasilnya.
	log.Printf("put bucket cname result:%#v\n", result)
}

Menampilkan daftar record CNAME

Gunakan kode berikut untuk menampilkan daftar record CNAME untuk sebuah 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"
)

// Definisikan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi flag command line.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing flag command line.
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

	// Periksa apakah wilayah telah diberikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah wajib diisi")
	}

	// Muat konfigurasi default, lalu atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat client OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk menampilkan daftar record CNAME bucket.
	request := &oss.ListCnameRequest{
		Bucket: oss.Ptr(bucketName),
	}

	// Eksekusi permintaan untuk menampilkan daftar record CNAME.
	result, err := client.ListCname(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menampilkan daftar 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 {
			// Cetak nama domain kustom.
			log.Printf("Domain: %s", cnameInfo.Domain)
			// Cetak waktu modifikasi terakhir.
			log.Printf("LastModified: %s", cnameInfo.LastModified)
			// Cetak status nama domain.
			log.Printf("Status: %s", cnameInfo.Status)
		}
	}
}

Menghapus record CNAME

Gunakan kode berikut 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"
)

// Definisikan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi flag command line.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing flag command line.
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

	// Periksa apakah wilayah telah diberikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah wajib diisi")
	}

	// Muat konfigurasi default, lalu atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat client OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk menghapus record CNAME bucket.
	request := &oss.DeleteCnameRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
		BucketCnameConfiguration: &oss.BucketCnameConfiguration{
			Cname: &oss.Cname{
				Domain: oss.Ptr("www.example.com"), // Tentukan nama domain kustom.
			},
		},
	}

	// Eksekusi permintaan untuk menghapus record CNAME.
	result, err := client.DeleteCname(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menghapus cname bucket %v", err)
	}

	// Cetak hasilnya.
	log.Printf("delete bucket cname result:%#v\n", result)
}

Referensi

  • Untuk operasi API guna membuat token CNAME untuk verifikasi kepemilikan domain, lihat CreateCnameToken.

  • Untuk operasi API guna mendapatkan token CNAME, lihat GetCnameToken.

  • Untuk operasi API guna menambahkan record CNAME, lihat PutCname.

  • Untuk operasi API guna menampilkan daftar record CNAME, lihat ListCname.

  • Untuk operasi API guna menghapus record CNAME, lihat DeleteCname.