Anda dapat mengonfigurasi bucket untuk static website hosting dan menetapkan aturan pengalihan (RoutingRule) untuk mirroring-based back-to-origin. Setelah static website hosting diaktifkan, permintaan ke website tersebut setara dengan permintaan ke bucket. Anda juga dapat mengonfigurasi pengalihan otomatis ke halaman indeks dan halaman error yang ditentukan. Aturan pengalihan untuk mirroring-based back-to-origin membantu Anda melakukan migrasi data ke Object Storage Service (OSS) secara mulus.
Catatan penggunaan
Pada topik ini, titik akhir publik wilayah China (Hangzhou) digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya tentang wilayah dan titik akhir OSS, lihat Regions and endpoints.
Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Configure access credentials.
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 Configure a client (Go SDK V1).
Untuk mengonfigurasi static website hosting atau mirroring-based back-to-origin, Anda harus memiliki izin
oss:PutBucketWebsite. Untuk mengambil konfigurasi static website hosting atau mirroring-based back-to-origin, Anda harus memiliki izinoss:GetBucketWebsite. Untuk menghapus konfigurasi static website hosting atau mirroring-based back-to-origin, Anda harus memiliki izinoss:DeleteBucketWebsite. Untuk informasi selengkapnya, lihat Grant custom access policies to RAM users.
Static website hosting
Website statis terdiri dari halaman web dengan konten statis, termasuk skrip sisi klien seperti JavaScript. Anda dapat menggunakan fitur static website hosting untuk meng-host website statis Anda pada sebuah bucket dan mengaksesnya melalui titik akhir bucket tersebut.
Konfigurasikan static website hosting
Kode berikut menunjukkan cara mengonfigurasi static website hosting:
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan 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 { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan titik akhirnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" // Konfigurasikan static website hosting untuk menggunakan index.html sebagai halaman utama default dan error.html sebagai halaman 404 default. err = client.SetBucketWebsite(bucketName, "index.html", "error.html") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } }Lihat konfigurasi static website hosting
Kode berikut menunjukkan cara melihat konfigurasi static website hosting:
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan 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 { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan titik akhirnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" // Lihat konfigurasi static website hosting. wsRes, err := client.GetBucketWebsite(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println("indexWebsite: ", wsRes.IndexDocument.Suffix) fmt.Println("errorWebsite: ", wsRes.ErrorDocument.Key) }Hapus konfigurasi static website hosting
Kode berikut menunjukkan cara menghapus konfigurasi static website hosting:
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan 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 { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan titik akhirnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" // Hapus konfigurasi static website hosting. err = client.DeleteBucketWebsite(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } }
Mirroring-based back-to-origin
Mirroring-based back-to-origin terutama digunakan untuk migrasi data ke OSS secara mulus. Misalnya, layanan Anda mungkin sedang berjalan di server origin milik Anda sendiri atau di produk cloud lainnya. Jika Anda ingin memindahkan layanan tersebut ke OSS demi pengembangan bisnis, Anda harus memastikan layanan tetap berjalan selama proses migrasi. Selama migrasi, Anda dapat menggunakan aturan mirroring-based back-to-origin untuk mengambil data yang belum dimigrasikan ke OSS, sehingga layanan Anda tetap beroperasi sebagaimana mestinya.
Konfigurasikan mirroring-based back-to-origin
Sebagai contoh, jika peminta mencoba mengakses objek yang tidak ada di bucket tujuan, Anda dapat menentukan kondisi kembali-ke-asal dan URL asal untuk mengambil objek tersebut dari origin. Asumsikan Anda memiliki bucket bernama examplebucket di wilayah China (Hangzhou). Jika peminta mencoba mengakses file yang tidak ada di direktori `examplefolder/` pada direktori root bucket, Anda dapat mengonfigurasi OSS untuk mengambil file tersebut dari direktori `examplefolder/` situs www.example.com.
Kode berikut menunjukkan cara mengonfigurasi aturan mirroring-based back-to-origin untuk skenario di atas:
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan 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 { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan titik akhirnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" var indexWebsite = "myindex.html" var errorWebsite = "myerror.html" btrue := true bfalse := false // Setel tipe kembali-ke-asal ke Mirror. ruleOk := oss.RoutingRule{ RuleNumber: 1, Condition: oss.Condition{ KeyPrefixEquals: "", // Setel kondisi kembali-ke-asal ke kode status HTTP 404. HTTPErrorCodeReturnedEquals: 404, }, Redirect: oss.Redirect{ RedirectType: "Mirror", // PassQueryString: &btrue, // Tentukan URL asal. MirrorURL: "http://www.test.com/", // MirrorPassQueryString:&btrue, // MirrorFollowRedirect:&bfalse, // MirrorCheckMd5:&bfalse, MirrorHeaders: oss.MirrorHeaders{ // PassAll:&bfalse, // Izinkan parameter header HTTP tertentu dilewatkan. Pass: []string{"myheader-key1", "myheader-key2"}, // Larang parameter header HTTP tertentu dilewatkan. Remove: []string{"myheader-key3", "myheader-key4"}, Set: []oss.MirrorHeaderSet{ { Key: "myheader-key5", Value: "myheader-value5", }, }, }, }, } // Setel tipe kembali-ke-asal ke Redirection. ruleArrOk := []oss.RoutingRule{ { RuleNumber: 2, Condition: oss.Condition{ // Setel kondisi kembali-ke-asal ke kode status HTTP 404 dan awalan objek ke abc/. KeyPrefixEquals: "abc/", HTTPErrorCodeReturnedEquals: 404, IncludeHeader: []oss.IncludeHeader{ { Key: "host", Equals: "test.oss-cn-beijing-internal.aliyuncs.com", }, }, }, Redirect: oss.Redirect{ RedirectType: "AliCDN", Protocol: "http", HostName: "www.test.com", PassQueryString: &bfalse, ReplaceKeyWith: "prefix/${key}.suffix", HttpRedirectCode: 301, }, }, // Setel tipe kembali-ke-asal ke Mirror. { RuleNumber: 3, Condition: oss.Condition{ KeyPrefixEquals: "", HTTPErrorCodeReturnedEquals: 404, }, Redirect: oss.Redirect{ RedirectType: "Mirror", PassQueryString: &btrue, MirrorURL: "http://www.test.com/", MirrorPassQueryString: &btrue, MirrorFollowRedirect: &bfalse, MirrorCheckMd5: &bfalse, MirrorHeaders: oss.MirrorHeaders{ PassAll: &btrue, Pass: []string{"myheader-key1", "myheader-key2"}, Remove: []string{"myheader-key3", "myheader-key4"}, Set: []oss.MirrorHeaderSet{ { Key: "myheader-key5", Value: "myheader-value5", }, }, }, }, }, } wxmlOne := oss.WebsiteXML{ IndexDocument: oss.IndexDocument{ Suffix: indexWebsite, }, ErrorDocument: oss.ErrorDocument{ Key: errorWebsite, }, } wxmlOne.RoutingRules = append(wxmlOne.RoutingRules, ruleOk) wxmlOne.RoutingRules = append(wxmlOne.RoutingRules, ruleArrOk...) err = client.SetBucketWebsiteDetail(bucketName, wxmlOne) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } }Ambil konfigurasi mirroring-based back-to-origin
Kode berikut menunjukkan cara mengambil konfigurasi mirroring-based back-to-origin:
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan 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 { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan titik akhirnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" // Dapatkan konfigurasi mirroring-based back-to-origin. data, err := client.GetBucketWebsiteXml(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(data) }Hapus konfigurasi mirroring-based back-to-origin
Kode berikut menunjukkan cara menghapus konfigurasi mirroring-based back-to-origin:
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // Dapatkan 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 { fmt.Println("Error:", err) os.Exit(-1) } // Buat instans OSSClient. // Setel yourEndpoint ke titik akhir bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan titik akhirnya. // Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya. clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)} clientOptions = append(clientOptions, oss.Region("yourRegion")) // Setel versi signature. clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4)) client, err := oss.New("yourEndpoint", "", "", clientOptions...) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // Tentukan nama bucket. Misalnya, examplebucket. bucketName := "examplebucket" // Hapus konfigurasi mirroring-based back-to-origin. err = client.DeleteBucketWebsite(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } }
Referensi
Untuk kode contoh lengkap mengenai static website hosting dan mirroring-based back-to-origin, lihat GitHub sample.
Untuk informasi selengkapnya tentang operasi API yang digunakan untuk mengonfigurasi static website hosting atau mirroring-based back-to-origin, lihat PutBucketWebsite.
Untuk informasi selengkapnya tentang operasi API yang digunakan untuk mengambil konfigurasi static website hosting atau mirroring-based back-to-origin, lihat GetBucketWebsite.
Untuk informasi selengkapnya tentang operasi API yang digunakan untuk menghapus konfigurasi static website hosting atau mirroring-based back-to-origin, lihat DeleteBucketWebsite.