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 situs web tersebut setara dengan permintaan ke bucket. Anda juga dapat mengonfigurasi pengalihan otomatis ke halaman indeks dan halaman error tertentu. Aturan pengalihan untuk mirroring-based back-to-origin membantu Anda melakukan migrasi data ke Object Storage Service (OSS) secara mulus.
Catatan Penggunaan
Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai 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 using OSS SDK for Python 1.0.
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 Initialization.
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 tersebut, Anda harus memiliki izinoss:DeleteBucketWebsite. Untuk informasi selengkapnya, lihat Grant custom access policies to RAM users.
Static website hosting
Konfigurasikan static website hosting
Kode contoh berikut menunjukkan cara mengonfigurasi static website hosting:
#-*-coding:utf-8-*- import oss2 from oss2.models import BucketWebsite from oss2.credentials import EnvironmentVariableCredentialsProvider # Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Tentukan wilayah tempat bucket berada. Contoh: cn-hangzhou. Parameter ini wajib jika Anda menggunakan algoritma signature V4. region = "cn-hangzhou" # Ganti examplebucket dengan nama bucket Anda. bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region) # Aktifkan static website hosting, tetapkan halaman utama default ke index.html, lalu tetapkan halaman error 404 default ke error.html. bucket.put_bucket_website(BucketWebsite('index.html', 'error.html'))Kueri konfigurasi static website hosting
Kode contoh berikut menunjukkan cara melakukan kueri terhadap konfigurasi static website hosting:
#-*-coding:utf-8-*- import oss2 from oss2.models import BucketWebsite from oss2.credentials import EnvironmentVariableCredentialsProvider # Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Tentukan wilayah tempat bucket berada. Contoh: cn-hangzhou. Parameter ini wajib jika Anda menggunakan algoritma signature V4. region = "cn-hangzhou" # Ganti examplebucket dengan nama bucket Anda. bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region) try: # Jika static website hosting belum diaktifkan untuk bucket, pengecualian NoSuchWebsite akan dilempar saat Anda menggunakan get_bucket_website. website = bucket.get_bucket_website() print('File indeks adalah {0}, file error adalah {1}'.format(website.index_file, website.error_file)) except oss2.exceptions.NoSuchWebsite as e: print('Website belum dikonfigurasi, request_id={0}'.format(e.request_id))Hapus konfigurasi static website hosting
Kode contoh berikut menunjukkan cara menghapus konfigurasi static website hosting:
#-*-coding:utf-8-*- import oss2 from oss2.models import BucketWebsite from oss2.credentials import EnvironmentVariableCredentialsProvider # Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Tentukan wilayah tempat bucket berada. Contoh: cn-hangzhou. Parameter ini wajib jika Anda menggunakan algoritma signature V4. region = "cn-hangzhou" # Ganti examplebucket dengan nama bucket Anda. bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region) # Hapus konfigurasi static website hosting. bucket.delete_bucket_website()
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 pada 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 berjalan sebagaimana mestinya.
Konfigurasikan aturan mirroring-based back-to-origin
Sebagai contoh, ketika peminta mengakses file yang tidak ada di bucket tujuan, Anda dapat menentukan kondisi kembali-ke-asal dan URL asal untuk mengambil file objek dari server origin. Misalnya, Anda memiliki bucket bernama examplebucket di wilayah China (Hangzhou). Jika peminta mencoba mengakses file yang tidak ada di direktori examplefolder dalam direktori root bucket tersebut, Anda ingin peminta tersebut dapat mengambil file objek dari direktori examplefolder di situs https://www.example.com/.
Kode contoh berikut menunjukkan cara mengonfigurasi aturan mirroring-based back-to-origin untuk skenario di atas:
#-*-coding:utf-8-*- import oss2 from oss2.models import BucketWebsite, MirrorHeadersSet, RedirectMirrorHeaders, Redirect, RoutingRule, \ REDIRECT_TYPE_MIRROR, Condition from oss2.credentials import EnvironmentVariableCredentialsProvider # Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Tentukan wilayah tempat bucket berada. Contoh: cn-hangzhou. Parameter ini wajib jika Anda menggunakan algoritma signature V4. region = "cn-hangzhou" # Ganti examplebucket dengan nama bucket Anda. bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region) # Aktifkan static website hosting, tetapkan halaman utama default ke index.html, lalu tetapkan halaman error 404 default ke error.html. index_file = 'index.html' error_file = 'error.html' # Tentukan kondisi pencocokan. condition1 = Condition(key_prefix_equals='examplefolder', http_err_code_return_equals=404) # Tentukan header yang ingin disertakan dalam respons saat objek yang diminta diperoleh dari origin. mirror_headers_set_1 = MirrorHeadersSet("myheader-key5", "myheader-value5") mirror_headers_set_2 = MirrorHeadersSet("myheader-key6", "myheader-value6") set_list = [mirror_headers_set_1, mirror_headers_set_2] pass_list = ['myheader-key1', 'myheader-key2'] remove_list = ['myheader-key3', 'myheader-key4'] mirror_header = RedirectMirrorHeaders(pass_all=True, pass_list=pass_list, remove_list=remove_list, set_list=set_list) # Tentukan operasi yang ingin dilakukan saat aturan cocok. redirect1 = Redirect(redirect_type=REDIRECT_TYPE_MIRROR, mirror_url='https://www.example.com/', mirror_pass_query_string=True, mirror_follow_redirect=True, mirror_check_md5=True, mirror_headers=mirror_header) rule1 = RoutingRule(rule_num=1, condition=condition1, redirect=redirect1) website_set = BucketWebsite(index_file, error_file, [rule1]) # Konfigurasikan aturan mirroring-based back-to-origin. bucket.put_bucket_website(website_set)Kueri konfigurasi mirroring-based back-to-origin
Kode contoh berikut menunjukkan cara melakukan kueri terhadap konfigurasi mirroring-based back-to-origin:
#-*-coding:utf-8-*- import oss2 from oss2.models import BucketWebsite, MirrorHeadersSet, RedirectMirrorHeaders, Redirect, RoutingRule, \ REDIRECT_TYPE_MIRROR, Condition from oss2.credentials import EnvironmentVariableCredentialsProvider # Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Tentukan wilayah tempat bucket berada. Contoh: cn-hangzhou. Parameter ini wajib jika Anda menggunakan algoritma signature V4. region = "cn-hangzhou" # Ganti examplebucket dengan nama bucket Anda. bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region) try: # Jika static website hosting belum diaktifkan untuk bucket, pengecualian NoSuchWebsite akan dilempar saat Anda menggunakan get_bucket_website. website_get = bucket.get_bucket_website() # Kueri halaman utama default. print(website_get.index_file) # Kueri halaman error 404 default. print(website_get.error_file) for rule in website_get.rules: print(rule.rule_num) # Kueri awalan yang digunakan untuk pencocokan aturan. print(rule.condition.key_prefix_equals) # Kueri kode status HTTP. print(rule.condition.http_err_code_return_equals) # Kueri tipe pengalihan. print(rule.redirect.redirect_type) # Kueri URL asal untuk mirroring-based back-to-origin. print(rule.redirect.mirror_url) # Kueri parameter dalam permintaan. print(rule.redirect.pass_query_string) # Tentukan string yang digunakan untuk menggantikan nama objek saat permintaan dialihkan. Nilai parameter ini bisa berupa variabel. # print(rule.redirect.replace_key_with) # Tentukan string yang digunakan untuk menggantikan awalan nama objek saat permintaan dialihkan. Jika awalan nama objek kosong, string tersebut akan ditempatkan di depan nama objek. # print(rule.redirect.replace_key_prefix_with) # Kueri protokol yang digunakan untuk pengalihan. # print(rule.redirect.proto) # Kueri nama domain tujuan pengalihan permintaan. # print(rule.redirect.host_name) # Kueri kode status HTTP dalam tanggapan. # print(rule.redirect.http_redirect_code) except oss2.exceptions.NoSuchWebsite as e: print('Website belum dikonfigurasi, request_id={0}'.format(e.request_id))Hapus konfigurasi mirroring-based back-to-origin
Kode contoh berikut menunjukkan cara menghapus konfigurasi mirroring-based back-to-origin:
#-*-coding:utf-8-*- import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider # Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # Tentukan wilayah tempat bucket berada. Contoh: cn-hangzhou. Parameter ini wajib jika Anda menggunakan algoritma signature V4. region = "cn-hangzhou" # Ganti examplebucket dengan nama bucket Anda. bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region) # Hapus konfigurasi mirroring-based back-to-origin. bucket.delete_bucket_website()
Referensi
Untuk informasi selengkapnya mengenai operasi API yang dapat Anda panggil untuk mengonfigurasi static website hosting atau mirroring-based back-to-origin, lihat PutBucketWebsite.
Untuk informasi selengkapnya mengenai operasi API yang dapat Anda panggil untuk melakukan kueri terhadap konfigurasi static website hosting atau mirroring-based back-to-origin, lihat GetBucketWebsite.
Untuk informasi selengkapnya mengenai operasi API yang dapat Anda panggil untuk menghapus konfigurasi static website hosting atau mirroring-based back-to-origin, lihat DeleteBucketWebsite.