全部产品
Search
文档中心

Object Storage Service:Hosting situs web statis (kembali-ke-asal berbasis mirroring) menggunakan OSS SDK untuk Go 2.0

更新时间:Sep 10, 2025

Anda dapat mengaktifkan hosting situs web statis untuk bucket dan mengonfigurasi aturan pengembalian ke sumber berbasis mirroring. Setelah meng-hosting situs web statis pada bucket, Anda dapat mengakses bucket tersebut untuk mengunjungi situs web. Anda akan secara otomatis diarahkan ke halaman indeks atau halaman kesalahan yang ditentukan. Setelah aturan pengembalian ke sumber berbasis mirroring dikonfigurasi, Anda dapat menggunakan fitur ini untuk bermigrasi data ke Object Storage Service (OSS) secara mulus.

Catatan

  • Kode contoh dalam topik ini menggunakan ID Wilayah cn-hangzhou dari 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 bucket tersebut, 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.

  • Izin oss:PutBucketWebsite diperlukan untuk konfigurasi hosting situs web statis atau pengembalian ke sumber berbasis mirroring. Izin oss:GetBucketWebsite diperlukan untuk menanyakan konfigurasi hosting situs web statis atau pengembalian ke sumber berbasis mirroring. Izin oss:DeleteBucketWebsite diperlukan untuk menghapus konfigurasi hosting situs web statis atau pengembalian ke sumber berbasis mirroring. Untuk informasi lebih lanjut, lihat Lampirkan Kebijakan Kustom ke Pengguna RAM.

Hosting situs web statis

Situs web statis adalah situs web yang hanya terdiri dari konten statis, termasuk skrip seperti kode JavaScript yang dapat dijalankan di sisi klien. Anda dapat menggunakan fitur hosting situs web statis untuk meng-hosting situs web statis Anda di bucket OSS dan mengakses situs web tersebut melalui nama domain bucket.

Konfigurasikan hosting situs web statis

Kode berikut memberikan contoh cara mengonfigurasi hosting situs web statis.

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(&region, "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 mengonfigurasi hosting situs web statis untuk bucket.
	request := &oss.PutBucketWebsiteRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
		WebsiteConfiguration: &oss.WebsiteConfiguration{
			IndexDocument: &oss.IndexDocument{
				Suffix:        oss.Ptr("index.html"), // Atur halaman utama default menjadi index.html untuk situs web statis yang di-hosting di bucket.
				SupportSubDir: oss.Ptr(true),         // Tentukan bahwa subdirektori didukung.
				Type:          oss.Ptr(int64(0)),     // Tipe (Mengatur parameter ini ke 0 menunjukkan bahwa hosting situs web statis dikonfigurasi).
			},
			ErrorDocument: &oss.ErrorDocument{
				Key:        oss.Ptr("error.html"), // Atur halaman kesalahan menjadi error.html.
				HttpStatus: oss.Ptr(int64(404)),   // Kode status HTTP.
			},
		},
	}

	// Eksekusi permintaan untuk mengonfigurasi hosting situs web statis.
	result, err := client.PutBucketWebsite(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal memasukkan website bucket %v", err)
	}

	// Tampilkan hasilnya.
	log.Printf("hasil memasukkan website bucket:%#v\n", result)
}

Tanyakan konfigurasi hosting situs web statis

Kode berikut memberikan contoh cara menanyakan konfigurasi hosting situs web statis.

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(&region, "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 konfigurasi hosting situs web statis untuk bucket.
	request := &oss.GetBucketWebsiteRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
	}

	// Lakukan operasi penanyaan dan proses hasilnya.
	result, err := client.GetBucketWebsite(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal mendapatkan website bucket %v", err)
	}

	// Tampilkan hasilnya.
	log.Printf("hasil mendapatkan website bucket:%#v\n", result)
}

Hapus konfigurasi hosting situs web statis

Berikut adalah potongan kode sampel untuk menghapus konfigurasi hosting situs web statis:

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(&region, "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 konfigurasi hosting situs web statis untuk bucket.
	request := &oss.DeleteBucketWebsiteRequest{
		Bucket: oss.Ptr(bucketName),
	}

	// Eksekusi permintaan dan proses hasilnya.
	result, err := client.DeleteBucketWebsite(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menghapus website bucket %v", err)
	}

	// Tampilkan hasil penghapusan.
	log.Printf("hasil penghapusan website bucket:%#v\n", result)
}

Pengembalian ke sumber berbasis mirroring

Pengembalian ke sumber berbasis mirroring memungkinkan Anda bermigrasi data ke OSS secara mulus. Sebagai contoh, Anda dapat memindahkan layanan dari origin yang dikelola sendiri atau dari layanan cloud lain ke OSS tanpa menyebabkan gangguan layanan. Anda dapat menggunakan aturan pengembalian ke sumber berbasis mirroring selama migrasi untuk mendapatkan data yang belum dipindahkan ke OSS, memastikan kelangsungan bisnis.

Konfigurasikan pengembalian ke sumber berbasis mirroring

Jika seorang peminta mencoba mengakses objek di bucket tertentu tetapi objek tersebut tidak ada, Anda dapat menentukan URL objek di origin dan kondisi pengembalian ke sumber untuk memungkinkan peminta mendapatkan objek dari origin. Sebagai contoh, sebuah bucket bernama examplebucket berlokasi di wilayah China (Hangzhou). Ketika seorang peminta mencoba mengakses objek di direktori examplefolder dari direktori root examplebucket yang berlokasi di wilayah China (Hangzhou), tetapi objek tersebut tidak ada, peminta dialihkan ke origin-nya www.example.com untuk mengakses objek yang diperlukan yang disimpan di direktori examplefolder dari origin.

Kode berikut memberikan contoh cara mengonfigurasi pengembalian ke sumber berbasis mirroring untuk skenario di atas.

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(&region, "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)

	// Konfigurasikan aturan pengembalian ke sumber berbasis mirroring.
	ruleOk := oss.RoutingRule{
		RuleNumber: oss.Ptr(int64(1)),
		Condition: &oss.RoutingRuleCondition{
			KeyPrefixEquals:             oss.Ptr("myobject"), // Tentukan awalan objek yang cocok.
			HttpErrorCodeReturnedEquals: oss.Ptr(int64(404)), // Tetapkan kondisi pengembalian ke sumber sebagai kode status HTTP 404.
		},
		Redirect: &oss.RoutingRuleRedirect{
			RedirectType: oss.Ptr("Mirror"),               // Tetapkan tipe pengembalian ke sumber sebagai mirroring.
			MirrorURL:    oss.Ptr("http://www.test.com/"), // Tentukan URL pengembalian ke sumber untuk aturan pengembalian ke sumber berbasis mirroring.
			MirrorHeaders: &oss.MirrorHeaders{
				//PassAll: oss.Ptr(true),                              // Tentukan bahwa semua header ditransmisikan.
				Passs:   []string{"myheader-key1", "myheader-key2"}, // Transmisikan header HTTP tertentu.
				Removes: []string{"myheader-key3", "myheader-key4"}, // Larang transmisi header HTTP tertentu.
				Sets: []oss.MirrorHeadersSet{
					{
						Key:   oss.Ptr("myheader-key5"),  // Tentukan nama header HTTP.
						Value: oss.Ptr("myheader-value"), // Tentukan nilai header HTTP.
					},
				},
			},
		},
	}

	// Buat permintaan untuk mengonfigurasi aturan pengembalian ke sumber berbasis mirroring.
	request := &oss.PutBucketWebsiteRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
		WebsiteConfiguration: &oss.WebsiteConfiguration{
			IndexDocument: &oss.IndexDocument{
				Suffix:        oss.Ptr("index.html"), // Atur halaman utama default menjadi index.html.
				SupportSubDir: oss.Ptr(true),
				Type:          oss.Ptr(int64(0)),
			},
			ErrorDocument: &oss.ErrorDocument{
				Key:        oss.Ptr("error.html"), // Atur halaman kesalahan menjadi error.html.
				HttpStatus: oss.Ptr(int64(404)),
			},
			RoutingRules: &oss.RoutingRules{
				RoutingRules: []oss.RoutingRule{
					ruleOk,
				},
			},
		},
	}

	// Eksekusi permintaan.
	result, err := client.PutBucketWebsite(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal memasukkan website bucket %v", err)
	}

	// Tampilkan hasilnya.
	log.Printf("hasil memasukkan website bucket:%#v\n", result)
}

Tanyakan konfigurasi pengembalian ke sumber berbasis mirroring

Kode berikut memberikan contoh cara menanyakan konfigurasi pengembalian ke sumber berbasis mirroring dari 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(&region, "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 konfigurasi pengembalian ke sumber berbasis mirroring untuk bucket.
	request := &oss.GetBucketWebsiteRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
	}

	// Lakukan operasi penanyaan.
	result, err := client.GetBucketWebsite(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal mendapatkan website bucket %v", err)
	}

	// Tampilkan hasilnya.
	log.Printf("hasil mendapatkan website bucket:%#v\n", result.WebsiteConfiguration.RoutingRules)
}

Hapus konfigurasi pengembalian ke sumber berbasis mirroring

Kode berikut memberikan contoh cara menghapus konfigurasi pengembalian ke sumber berbasis mirroring dari 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(&region, "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 konfigurasi pengembalian ke sumber berbasis mirroring untuk bucket.
	request := &oss.DeleteBucketWebsiteRequest{
		Bucket: oss.Ptr(bucketName),
	}

	// Eksekusi permintaan dan proses hasilnya.
	result, err := client.DeleteBucketWebsite(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menghapus website bucket %v", err)
	}

	// Tampilkan hasil penghapusan.
	log.Printf("hasil penghapusan website bucket:%#v\n", result)
}

Referensi

  • Untuk kode sampel lengkap yang digunakan untuk mengonfigurasi hosting situs web statis dan pengembalian ke sumber berbasis mirroring, kunjungi put_bucket_website.go, get_bucket_website.go, dan delete_bucket_website.go.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengonfigurasi hosting situs web statis atau pengembalian ke sumber berbasis mirroring, lihat PutBucketWebsite.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menanyakan konfigurasi hosting situs web statis atau aturan pengembalian ke sumber berbasis mirroring, lihat GetBucketWebsite.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menghapus konfigurasi hosting situs web statis atau aturan pengembalian ke sumber berbasis mirroring, lihat DeleteBucketWebsite.