Anda dapat mengonfigurasi bucket untuk static website hosting. Setelah dikonfigurasi, bucket tersebut dapat diakses sebagai website yang secara otomatis mengarahkan ke halaman indeks dan halaman error yang telah ditentukan.
Catatan
OSS C SDK versi 3.6.0 dan yang lebih baru mendukung static website hosting.
Topik ini menggunakan public endpoint wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lainnya dalam wilayah yang sama dengan OSS, gunakan internal endpoint. Untuk informasi selengkapnya mengenai wilayah dan endpoint OSS, lihat Regions and endpoints.
Pada topik ini, instans OSSClient dibuat menggunakan endpoint OSS. Jika Anda ingin membuat instans OSSClient menggunakan custom domain name atau Security Token Service (STS), lihat Initialization (C SDK).
Untuk mengonfigurasi static website hosting, Anda harus memiliki izin
oss:PutBucketWebsite. Untuk melihat konfigurasi static website hosting, Anda harus memiliki izinoss:GetBucketWebsite. Untuk menghapus konfigurasi static website hosting, Anda harus memiliki izinoss:DeleteBucketWebsite. Untuk informasi selengkapnya, lihat Grant custom access policies to RAM users.
Konfigurasi static website hosting
Kode berikut menunjukkan cara mengonfigurasi static website hosting:
#include "oss_api.h"
#include "aos_http_io.h"
/* Ganti yourEndpoint dengan Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Ganti dengan nama bucket Anda. Misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Ganti yourRegion dengan Region ID wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ID menjadi cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* Inisialisasi tipe aos_string_t dengan string char*. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// Konfigurasikan dua parameter berikut.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Tentukan apakah CNAME digunakan. 0 berarti tidak menggunakan CNAME. */
options->config->is_cname = 0;
/* Atur parameter jaringan, seperti periode timeout. */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* Panggil metode aos_http_io_initialize di awal program untuk menginisialisasi sumber daya global seperti jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Memory pool (pool) untuk manajemen memori setara dengan apr_pool_t. Kode implementasinya berada di pustaka apr. */
aos_pool_t *pool;
/* Buat memory pool. Parameter kedua adalah NULL, yang berarti memory pool baru tidak mewarisi dari memory pool lain. */
aos_pool_create(&pool, NULL);
/* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
oss_request_options_t *oss_client_options;
/* Alokasikan memori untuk opsi di dalam memory pool. */
oss_client_options = oss_request_options_create(pool);
/* Inisialisasi opsi client oss_client_options. */
init_options(oss_client_options);
/* Inisialisasi parameter. */
aos_string_t bucket;
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
oss_website_config_t website_config;
aos_str_set(&bucket, bucket_name);
aos_str_set(&website_config.suffix_str, "index.html");
aos_str_set(&website_config.key_str, "error.html");
/* Konfigurasikan static website hosting. Atur halaman indeks menjadi index.html dan halaman error menjadi error.html. */
resp_status = oss_put_bucket_website(oss_client_options, &bucket, &website_config, &resp_headers);
if (aos_status_is_ok(resp_status)) {
printf("put bucket website succeeded\n");
} else {
printf("put bucket website failed\n");
}
/* Hapus memory pool. Ini akan melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
aos_pool_destroy(pool);
/* Lepaskan sumber daya global yang sebelumnya dialokasikan. */
aos_http_io_deinitialize();
return 0;
}Lihat konfigurasi static website hosting
Kode berikut menunjukkan cara melihat konfigurasi static website hosting:
#include "oss_api.h"
#include "aos_http_io.h"
/* Ganti yourEndpoint dengan Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Ganti dengan nama bucket Anda. Misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Ganti yourRegion dengan Region ID wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ID menjadi cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* Inisialisasi tipe aos_string_t dengan string char*. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// Konfigurasikan dua parameter berikut.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Tentukan apakah CNAME digunakan. 0 berarti tidak menggunakan CNAME. */
options->config->is_cname = 0;
/* Atur parameter jaringan, seperti periode timeout. */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* Panggil metode aos_http_io_initialize di awal program untuk menginisialisasi sumber daya global seperti jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Memory pool (pool) untuk manajemen memori setara dengan apr_pool_t. Kode implementasinya berada di pustaka apr. */
aos_pool_t *pool;
/* Buat memory pool. Parameter kedua adalah NULL, yang berarti memory pool baru tidak mewarisi dari memory pool lain. */
aos_pool_create(&pool, NULL);
/* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
oss_request_options_t *oss_client_options;
/* Alokasikan memori untuk opsi di dalam memory pool. */
oss_client_options = oss_request_options_create(pool);
/* Inisialisasi opsi client oss_client_options. */
init_options(oss_client_options);
/* Inisialisasi parameter. */
aos_string_t bucket;
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
oss_website_config_t website_config;
aos_str_set(&bucket, bucket_name);
/* Lihat konfigurasi static website hosting. */
resp_status = oss_get_bucket_website(oss_client_options, &bucket, &website_config, &resp_headers);
if (aos_status_is_ok(resp_status)) {
printf("get bucket website succeeded\n");
printf("website_config: %s %s \n", website_config.suffix_str.data, website_config.key_str.data);
} else {
printf("get bucket website failed\n");
}
/* Hapus memory pool. Ini akan melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
aos_pool_destroy(pool);
/* Lepaskan sumber daya global yang sebelumnya dialokasikan. */
aos_http_io_deinitialize();
return 0;
}Hapus konfigurasi static website hosting
Kode berikut menunjukkan cara menghapus konfigurasi static website hosting:
#include "oss_api.h"
#include "aos_http_io.h"
/* Ganti yourEndpoint dengan Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Ganti dengan nama bucket Anda. Misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Ganti yourRegion dengan Region ID wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ID menjadi cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* Inisialisasi tipe aos_string_t dengan string char*. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// Konfigurasikan dua parameter berikut.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Tentukan apakah CNAME digunakan. 0 berarti tidak menggunakan CNAME. */
options->config->is_cname = 0;
/* Atur parameter jaringan, seperti periode timeout. */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* Panggil metode aos_http_io_initialize di awal program untuk menginisialisasi sumber daya global seperti jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Memory pool (pool) untuk manajemen memori setara dengan apr_pool_t. Kode implementasinya berada di pustaka apr. */
aos_pool_t *pool;
/* Buat memory pool. Parameter kedua adalah NULL, yang berarti memory pool baru tidak mewarisi dari memory pool lain. */
aos_pool_create(&pool, NULL);
/* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
oss_request_options_t *oss_client_options;
/* Alokasikan memori untuk opsi di dalam memory pool. */
oss_client_options = oss_request_options_create(pool);
/* Inisialisasi opsi client oss_client_options. */
init_options(oss_client_options);
/* Inisialisasi parameter. */
aos_string_t bucket;
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
aos_str_set(&bucket, bucket_name);
/* Hapus konfigurasi static website hosting. */
resp_status = oss_delete_bucket_website(oss_client_options, &bucket, &resp_headers);
if (aos_status_is_ok(resp_status)) {
printf("delete bucket website succeeded\n");
} else {
printf("delete bucket website failed\n");
}
/* Hapus memory pool. Ini akan melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
aos_pool_destroy(pool);
/* Lepaskan sumber daya global yang sebelumnya dialokasikan. */
aos_http_io_deinitialize();
return 0;
}Referensi
Untuk informasi selengkapnya mengenai operasi API untuk mengonfigurasi static website hosting, lihat PutBucketWebsite.
Untuk informasi selengkapnya mengenai operasi API untuk melihat konfigurasi static website hosting, lihat GetBucketWebsite.
Untuk informasi selengkapnya mengenai operasi API untuk menghapus konfigurasi static website hosting, lihat DeleteBucketWebsite.