全部产品
Search
文档中心

Object Storage Service:Inisialisasi (C SDK)

更新时间:Nov 30, 2025

Anda harus menginisialisasi opsi permintaan (oss_request_options_t) dan menentukan endpoint saat menggunakan Object Storage Service (OSS) SDK untuk C.

Inisialisasi opsi permintaan

Gunakan algoritma signature V4 (direkomendasikan)

Kami merekomendasikan penggunaan algoritma signature V4 untuk keamanan yang lebih baik. Saat menginisialisasi SDK dengan signature V4, Anda harus menentukan endpoint dan ID wilayah Alibaba Cloud. ID wilayah menentukan wilayah tujuan pengiriman permintaan, seperti cn-hangzhou. Anda juga harus mendeklarasikan signature_version = 4. Signature V4 didukung di OSS SDK untuk C versi 3.11.0 dan yang lebih baru.

Contoh kode berikut menunjukkan cara membuat instans OSSClient menggunakan endpoint OSS dan algoritma signature V4. Untuk membuat instans OSSClient menggunakan nama domain kustom atau kredensial akses yang diperoleh dari STS, sesuaikan contoh kode berikut secara tepat.

#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan 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";
/* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou. */
const char *region = "yourRegion";

void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Gunakan string char* untuk menginisialisasi tipe data aos_string_t. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */  
    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"));
    // Tentukan dua parameter tambahan.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Tentukan apakah akan menggunakan CNAME untuk mengakses OSS. Nilai 0 berarti CNAME tidak digunakan. */
    options->config->is_cname = 0;
    /* Tentukan parameter jaringan. Parameter kedua dalam fungsi ini menentukan kepemilikan ctl. Secara default, nilai parameter kedua adalah 0. */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main() {
    aos_pool_t *p;
    oss_request_options_t *options;
    /* Inisialisasi variabel global. Anda hanya perlu menginisialisasi variabel global sekali dalam siklus hidup program. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        return -1;
    }
    /* Inisialisasi memory pool dan opsi. */
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_options(options);
    /* Kode logika. Pada contoh ini, kode logika dihilangkan. */
    /* Hapus memory pool. Operasi ini melepaskan sumber daya memori yang dialokasikan untuk permintaan. */
    aos_pool_destroy(p);
    /* Lepaskan sumber daya global yang dialokasikan. Anda hanya perlu melepaskan sumber daya global sekali dalam siklus hidup program. */
    aos_http_io_deinitialize();
    return 0;
}

Gunakan algoritma signature V1 (tidak direkomendasikan)

Penting

Mulai 1 Maret 2025, algoritma signature V1 OSS tidak lagi tersedia untuk pelanggan baru dengan UID baru. Mulai 1 September 2025, OSS tidak lagi memperbarui dan memelihara algoritma signature V1, serta algoritma tersebut tidak lagi tersedia untuk bucket baru. Segera tingkatkan dari signature V1 ke signature V4 untuk mencegah dampak terhadap bisnis Anda.

Gunakan endpoint OSS untuk menginisialisasi opsi permintaan

Contoh kode berikut menunjukkan cara menggunakan endpoint OSS untuk menginisialisasi opsi permintaan:

#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan 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";

void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Gunakan string char* untuk menginisialisasi aos_string_t. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */  
    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"));
    /* Tentukan apakah akan menggunakan CNAME. Nilai 0 berarti CNAME tidak digunakan. */
    options->config->is_cname = 0;
    /* Tentukan parameter jaringan. Parameter kedua dalam fungsi ini menentukan kepemilikan ctl. Secara default, nilai parameter kedua adalah 0. */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main() {
    aos_pool_t *p;
    oss_request_options_t *options;
    /* Inisialisasi variabel global. Anda hanya perlu menginisialisasi variabel global sekali dalam siklus hidup program. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        return -1;
    }
    /* Inisialisasi memory pool dan opsi. */
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_options(options);
    /* Kode logika. Pada contoh ini, kode logika dihilangkan. */
    /* Hapus memory pool. Operasi ini melepaskan sumber daya memori yang dialokasikan untuk permintaan. */
    aos_pool_destroy(p);
    /* Lepaskan sumber daya global yang dialokasikan. Anda hanya perlu melepaskan sumber daya global sekali dalam siklus hidup program. */
    aos_http_io_deinitialize();
    return 0;
}

Gunakan nama domain kustom untuk menginisialisasi opsi permintaan

Contoh kode berikut menunjukkan cara menggunakan nama domain kustom untuk menginisialisasi opsi permintaan:

#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan nama domain kustom. */
const char *endpoint = "yourCustomEndpoint";

void init_options(oss_request_options_t *options) {
    options->config = oss_config_create(options->pool);
    /* Gunakan string char* untuk menginisialisasi aos_string_t. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */  
    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"));
    /* Aktifkan CNAME dan petakan nama domain kustom ke bucket Anda. */
    options->config->is_cname = 1;
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main() {
    aos_pool_t *p;
    oss_request_options_t *options;
    /* Inisialisasi variabel global. Anda hanya perlu menginisialisasi variabel global sekali dalam siklus hidup program. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        return -1;
    }
    /* Inisialisasi memory pool dan opsi. */
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_options(options);
    /* Kode logika. Pada contoh ini, kode logika dihilangkan. */
    /* Hapus memory pool. Operasi ini melepaskan sumber daya memori yang dialokasikan untuk permintaan. */
    aos_pool_destroy(p);
    /* Lepaskan sumber daya global yang dialokasikan. Anda hanya perlu melepaskan sumber daya global sekali dalam siklus hidup program. */
    aos_http_io_deinitialize();
    return 0;
}

Gunakan kredensial akses temporary dari STS untuk menginisialisasi opsi permintaan

Contoh kode berikut menunjukkan cara menggunakan kredensial akses temporary yang diperoleh dari Security Token Service (STS) untuk menginisialisasi opsi permintaan:

#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan 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";
/* Sebelum menjalankan kode contoh, pastikan variabel lingkungan YOUR_ACCESS_KEY_ID dan YOUR_ACCESS_KEY_SECRET telah dikonfigurasi untuk menyimpan kredensial akses temporary yang diperoleh dari STS. */  
const char *access_key_id = getenv("YOUR_ACCESS_KEY_ID");
const char *access_key_secret = getenv("YOUR_ACCESS_KEY_SECRET");
/* Tentukan token keamanan yang diperoleh dari STS. */
const char *sts_token = "<yourSecurityToken>";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Gunakan string char* untuk menginisialisasi aos_string_t. */
    aos_str_set(&options->config->endpoint, endpoint);
    aos_str_set(&options->config->access_key_id, access_key_id);
    aos_str_set(&options->config->access_key_secret, access_key_secret);
    /* Atur token. */
    aos_str_set(&options->config->sts_token, sts_token);
    /* Tentukan apakah akan menggunakan CNAME. Nilai 0 berarti CNAME tidak digunakan. */
    options->config->is_cname = 0;
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main() {
    aos_pool_t *p;
    oss_request_options_t *options;
    /* Inisialisasi variabel global. Anda hanya perlu menginisialisasi variabel global sekali dalam siklus hidup program. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        return -1;
    }
    /* Inisialisasi memory pool dan opsi. */
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_options(options);
    /* Kode logika. Pada contoh ini, kode logika dihilangkan. */
    /* Hapus memory pool. Operasi ini melepaskan sumber daya memori yang dialokasikan untuk permintaan. */
    aos_pool_destroy(p);
    /* Lepaskan sumber daya global yang dialokasikan. Anda hanya perlu melepaskan sumber daya global sekali dalam siklus hidup program. */
    aos_http_io_deinitialize();
    return 0;
}

Parameter

Tabel berikut menjelaskan parameter umum.

Parameter

Deskripsi

speed_limit

Batas bawah kecepatan rata-rata. Satuan: byte/detik. Nilai default: 1024.

speed_time

Durasi minimum untuk perhitungan kecepatan rata-rata, dalam detik. Nilai default adalah 15.

Penting

Kedua parameter speed_limit dan speed_time wajib diatur. Jika kecepatan rata-rata kurang dari batas bawah yang ditentukan oleh parameter speed_limit selama periode waktu yang ditentukan oleh parameter speed_time, permintaan akan dihentikan.

connect_timeout

Periode timeout untuk membuat koneksi. Satuan: detik. Nilai default: 10.

dns_cache_timeout

Periode timeout cache DNS. Satuan: detik. Nilai default: 60.

max_memory_size

Ukuran maksimum data yang dapat ditulis ke memori saat data diunduh. Satuan: byte. Secara default, ukuran maksimum data yang dapat ditulis ke memori saat pengunduhan adalah 1 GB.

enable_crc

Menentukan apakah CRC-64 diaktifkan. Nilai yang valid:

  • 0: menonaktifkan CRC-64.

  • 1 (default): mengaktifkan CRC-64.

verify_ssl

Menentukan apakah autentikasi berbasis SSL diaktifkan. Nilai yang valid:

  • 0: menonaktifkan autentikasi berbasis SSL.

  • 1 (default): mengaktifkan autentikasi berbasis SSL.

ca_path

Jalur root sertifikat CA. Parameter ini berlaku ketika verify_ssl diatur ke 1. Secara default, parameter ini dikosongkan.

ca_file

Jalur sertifikat CA. Parameter ini berlaku ketika verify_ssl diatur ke 1. Secara default, parameter ini dikosongkan.

proxy_host

Alamat server proxy dalam format host:port.

proxy_auth

Kredensial autentikasi untuk server proxy dalam format user:password.

Contoh konfigurasi

Tentukan periode timeout

Contoh kode berikut menunjukkan cara menentukan periode timeout:

#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan 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";

void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Gunakan string char* untuk menginisialisasi aos_string_t. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */  
    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"));
    /* Tentukan apakah akan menggunakan CNAME. Nilai 0 berarti CNAME tidak digunakan. */
    options->config->is_cname = 0;
    /* Tentukan parameter jaringan. Parameter kedua dalam fungsi ini menentukan kepemilikan ctl. Secara default, nilai parameter kedua adalah 0. */
    options->ctl = aos_http_controller_create(options->pool, 0);
    /* Tentukan periode timeout untuk membuat koneksi. Nilai default: 10. Satuan: detik. */
    options->ctl->options->connect_timeout = 10;
    /* Tentukan periode timeout cache DNS. Nilai default: 60. Satuan: detik. */
    options->ctl->options->dns_cache_timeout = 60;
    /* 
    Tentukan periode timeout. 
    Konfigurasikan parameter speed_limit untuk menentukan batas bawah kecepatan rata-rata. Nilai default: 1024 (1 KB/detik). 
    Konfigurasikan parameter speed_time untuk menentukan durasi maksimum yang diizinkan ketika kecepatan rata-rata berada di bawah batas kecepatan minimum. Nilai default: 15. Satuan: detik. 
    Baris berikut menentukan bahwa timeout permintaan terjadi ketika kecepatan transmisi kurang dari 1 KB/detik selama 15 detik berturut-turut: 
    */
    options->ctl->options->speed_limit = 1024;
    options->ctl->options->speed_time = 15;
}
int main() {
    aos_pool_t *p;
    oss_request_options_t *options;
    /* Inisialisasi variabel global. Anda hanya perlu menginisialisasi variabel global sekali dalam siklus hidup program. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        return -1;
    }
    /* Inisialisasi memory pool dan opsi. */
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_options(options);
    /* Kode logika. Pada contoh ini, kode logika dihilangkan. */
    /* Hapus memory pool. Operasi ini melepaskan sumber daya memori yang dialokasikan untuk permintaan. */
    aos_pool_destroy(p);
    /* Lepaskan sumber daya global yang dialokasikan. Anda hanya perlu melepaskan sumber daya global sekali dalam siklus hidup program. */
    aos_http_io_deinitialize();
    return 0;
}

Konfigurasikan autentikasi berbasis SSL

Secara default, autentikasi berbasis SSL diaktifkan untuk OSS SDK untuk C versi 3.9.2 dan yang lebih baru. Jika autentikasi berbasis SSL gagal, periksa apakah jalur sertifikat SSL sudah benar atau nonaktifkan autentikasi berbasis SSL.

Contoh kode berikut menunjukkan cara mengonfigurasi autentikasi berbasis SSL:

#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan 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";

void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Gunakan string char* untuk menginisialisasi aos_string_t. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */  
    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"));
    /* Tentukan apakah akan menggunakan CNAME. Nilai 0 berarti CNAME tidak digunakan. */
    options->config->is_cname = 0;
    /* Tentukan parameter jaringan. Parameter kedua dalam fungsi ini menentukan kepemilikan ctl. Secara default, nilai parameter kedua adalah 0. */
    options->ctl = aos_http_controller_create(options->pool, 0);

    /* Konfigurasikan autentikasi berbasis SSL. */
    Konfigurasikan parameter verify_ssl untuk menentukan apakah autentikasi berbasis SSL diaktifkan. Nilai yang valid: 0 dan 1. Nilai default: 1. Nilai 1 berarti autentikasi berbasis SSL diaktifkan. 
    Konfigurasikan parameter ca_path untuk menentukan jalur root sertifikat CA. Parameter ini berlaku ketika verify_ssl diatur ke 1. Secara default, parameter ini dikosongkan. 
    Konfigurasikan parameter ca_file untuk menentukan jalur sertifikat CA. Parameter ini berlaku ketika verify_ssl diatur ke 1. Secara default, parameter ini dikosongkan. */
    /* Aktifkan autentikasi berbasis SSL dan tentukan jalur sertifikat CA. */
    //options->ctl->options->verify_ssl = 1;
    //options->ctl->options->ca_path = "/etc/ssl/certs/";
    //options->ctl->options->ca_file = "/etc/ssl/certs/ca-certificates.crt";

    /* Nonaktifkan autentikasi berbasis SSL. */
    //options->ctl->options->verify_ssl = 0;
}
int main() {
    aos_pool_t *p;
    oss_request_options_t *options;
    /* Inisialisasi variabel global. Anda hanya perlu menginisialisasi variabel global sekali dalam siklus hidup program. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        return -1;
    }
    /* Inisialisasi memory pool dan opsi. */
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_options(options);
    /* Kode logika. Pada contoh ini, kode logika dihilangkan. */
    /* Hapus memory pool. Operasi ini melepaskan sumber daya memori yang dialokasikan untuk permintaan. */
    aos_pool_destroy(p);
    /* Lepaskan sumber daya global yang dialokasikan. Anda hanya perlu melepaskan sumber daya global sekali dalam siklus hidup program. */
    aos_http_io_deinitialize();
    return 0;
}