すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:初期化

最終更新日:Dec 19, 2023

Object Storage Service (OSS) SDK for Cを使用する場合は、リクエストオプション (oss_request_options_t) を初期化し、エンドポイントを指定する必要があります。

リクエストオプションの初期化Initialize request options

OSSエンドポイントを使用したリクエストオプションの初期化

次のサンプルコードは、OSSエンドポイントを使用してリクエストオプションを初期化する方法の例を示しています。

#include "oss_api.h"
# 「aos_http_io.h」を含める
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 * /
const char * endpoint = "yourEndpoint";

void init_options(oss_request_options_t * オプション)
{
    options->config = oss_config_create(options->pool);
    /* char * stringを使用して、aos_string_t型のデータを初期化します。 */
    aos_str_set(&options->config->endpoint, endpoint);
    /* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */  
    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"));
    /* CNAMEを使用するかどうかを指定します。 値0は、CNAMEが使用されないことを示す。 */
    options->config->is_cname = 0;
    /* ネットワークパラメータを指定します。 この関数の2番目のパラメーターは、ctlの所有権を指定します。 デフォルトでは、2番目のパラメーターの値は0です。 */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main() {
    aos_pool_t *p;
    oss_request_options_t *options;
    /* グローバル変数を初期化します。 グローバル変数を初期化する必要があるのは、プログラムのライフサイクルで1回だけです。 */
    if (aos_http_io_initialize(NULL, 0))! =AOSE_OK) {
        return -1;
    }
    /* メモリプールとオプションを初期化します。 */
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_options(options);
    /* ロジックコード。 この例では、論理コードは省略されている。 */
    /* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
    aos_pool_destroy(p);
    /* 割り当てられたグローバルリソースを解放します。 グローバルリソースをリリースする必要があるのは、プログラムのライフサイクル内で1回だけです。 */
    aos_http_io_deinitialize();
    0を返します。} 

カスタムドメイン名を使用して要求オプションを初期化する

次のサンプルコードは、カスタムドメイン名を使用してリクエストオプションを初期化する方法の例を示しています。

#include "oss_api.h"
# 「aos_http_io.h」を含める
# カスタムドメイン名を指定します。 * /
const char * endpoint = "yourCustomEndpoint";

void init_options(oss_request_options_t * オプション) {
    options->config = oss_config_create(options->pool);
    /* char * stringを使用して、aos_string_t型のデータを初期化します。 */
    aos_str_set(&options->config->endpoint, endpoint);
    /* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */  
    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"));
    /* CNAMEを有効にして、カスタムドメイン名をバケットにマッピングします。 */
    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;
    /* グローバル変数を初期化します。 グローバル変数を初期化する必要があるのは、プログラムのライフサイクルで1回だけです。 */
    if (aos_http_io_initialize(NULL, 0))! =AOSE_OK) {
        return -1;
    }
    /* メモリプールとオプションを初期化します。 */
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_options(options);
    /* ロジックコード。 この例では、論理コードは省略されている。 */
    /* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
    aos_pool_destroy(p);
    /* 割り当てられたグローバルリソースを解放します。 グローバルリソースをリリースする必要があるのは、プログラムのライフサイクル内で1回だけです。 */
    aos_http_io_deinitialize();
    0を返します。} 

STSから取得した一時的なアクセス資格情報を使用してリクエストオプションを初期化する

次のサンプルコードは、Security Token Service (STS) から取得した一時的なアクセス資格情報を使用してリクエストオプションを初期化する方法の例を示しています。

#include "oss_api.h"
# 「aos_http_io.h」を含める
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 * /
const char * endpoint = "yourEndpoint";
/* サンプルコードを実行する前に、STSから取得した一時的なアクセス資格情報を使用して、YOUR_ACCESS_KEY_IDおよびYOUR_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 * /
const char * access_key_id = getenv("YOUR_ACCESS_KEYID");
const char * access_key_secret = getenv("YOUR_ACCESS_KEY_SECRET");
/* STSから取得するセキュリティトークンを指定します。 * /
const char * sts_token = "<yourSecurityToken>";
void init_options(oss_request_options_t * オプション)
{
    options->config = oss_config_create(options->pool);
    /* char * stringを使用して、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);
    /* STSを設定します。 */
    aos_str_set(&options->config->sts_token, sts_token);
    /* CNAMEを使用するかどうかを指定します。 値0は、CNAMEが使用されないことを示す。 */
    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;
    /* グローバル変数を初期化します。 グローバル変数を初期化する必要があるのは、プログラムのライフサイクルで1回だけです。 */
    if (aos_http_io_initialize(NULL, 0))! =AOSE_OK) {
        return -1;
    }
    /* メモリプールとオプションを初期化します。 */
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_options(options);
    /* ロジックコード。 この例では、論理コードは省略されている。 */
    /* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
    aos_pool_destroy(p);
    /* 割り当てられたグローバルリソースを解放します。 グローバルリソースをリリースする必要があるのは、プログラムのライフサイクル内で1回だけです。 */
    aos_http_io_deinitialize();
    0を返します。} 

パラメーターの設定

共通パラメーターを次の表に示します。

パラメーター

説明

speed_limit

平均速度の下限。 単位: バイト /秒。 デフォルト値: 1024。

speed_time

速度が平均速度の下限未満の場合に許容される最大期間。 単位は秒です。 デフォルト値:15。

重要

リクエストのタイムアウト期間を指定するには、speed_limitパラメーターとspeed_timeパラメーターの両方を設定する必要があります。 speed_timeパラメーターで指定された期間の間、平均速度がspeed_limitパラメーターで指定された下限未満の場合、リクエストは中断されます。

connect_timeout

接続を確立するためのタイムアウト期間。 単位は秒です。 デフォルト値は 10 です。

dns_cache_timeout

DNSキャッシュのタイムアウト期間。 単位は秒です。 デフォルト値: 0。

max_memory_size

データのダウンロード時にメモリに書き込むことができるデータの最大サイズ。 単位:バイト デフォルトでは、データのダウンロード時にメモリに書き込むことができるデータの最大サイズは1 GBです。

enable_crc

CRC-64を有効にするかどうかを指定します。 有効な値:

  • 0: CRC-64を無効にします。

  • 1 (デフォルト): CRC-64を有効にします。

verify_ssl

SSLベースの認証を有効にするかどうかを指定します。 有効な値:

  • 0: SSLベースの認証を無効にします。

  • 1 (デフォルト): SSLベースの認証を有効にします。

ca_path

CA証明書のルートパス。 このパラメーターは、verify_sslが1に設定されている場合に有効です。 デフォルトでは、このパラメータは空のままです。

ca_file

CA証明書のパス。 このパラメーターは、verify_sslが1に設定されている場合に有効です。 デフォルトでは、このパラメータは空のままです。

proxy_host

host:port形式のプロキシサーバーのアドレス。

proxy_auth

user:password形式のプロキシサーバーのパスワード。

設定例

タイムアウト期間の指定

次のサンプルコードは、タイムアウト期間を指定する方法の例を示しています。

#include "oss_api.h"
# 「aos_http_io.h」を含める
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 * /
const char * endpoint = "yourEndpoint";

void init_options(oss_request_options_t * オプション)
{
    options->config = oss_config_create(options->pool);
    /* char * stringを使用して、aos_string_t型のデータを初期化します。 */
    aos_str_set(&options->config->endpoint, endpoint);
    /* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */  
    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"));
    /* CNAMEを使用するかどうかを指定します。 値0は、CNAMEが使用されないことを示す。 */
    options->config->is_cname = 0;
    /* ネットワークパラメータを指定します。 この関数の2番目のパラメーターは、ctlの所有権を指定します。 デフォルトでは、2番目のパラメーターの値は0です。 */
    options->ctl = aos_http_controller_create(options->pool, 0);
    /* 接続を確立するためのタイムアウト時間を指定します。 デフォルト値は 10 です。 単位は秒です。 */
    options->ctl->options->connect_timeout = 10;
    /* DNSキャッシュのタイムアウト期間を指定します。 デフォルト値: 60。 単位は秒です。 */
    options->ctl->options->dns_cache_timeout = 60;
    /* 
    リクエストのタイムアウト期間を指定します。 
    speed_limitパラメーターを設定して、平均速度の下限を指定します。 デフォルト値: 1024 (1 KB/s) 。 
    speed_timeパラメーターを設定して、下限速度未満の平均速度に許容される最大時間を指定します。 デフォルト値: 15。 単位は秒です。 
    次のサンプルコードは、伝送速度が15秒間連続して1 KB/s未満の場合に発生するリクエストタイムアウトの例を示しています。 
    */
    options->ctl->options->speed_limit = 1024;
    options->ctl->options->speed_time = 15;
}
int main() {
    aos_pool_t *p;
    oss_request_options_t *options;
    /* グローバル変数を初期化します。 グローバル変数を初期化する必要があるのは、プログラムのライフサイクルで1回だけです。 */
    if (aos_http_io_initialize(NULL, 0))! =AOSE_OK) {
        return -1;
    }
    /* メモリプールとオプションを初期化します。 */
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_options(options);
    /* ロジックコード。 この例では、論理コードは省略されている。 */
    /* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
    aos_pool_destroy(p);
    /* 割り当てられたグローバルリソースを解放します。 グローバルリソースをリリースする必要があるのは、プログラムのライフサイクル内で1回だけです。 */
    aos_http_io_deinitialize();
    0を返します。} 

SSLベースの認証の設定

デフォルトでは、SSLベースの認証はOSS SDK for C 3.9.2以降で有効になっています。 SSLベースの認証が失敗した場合は、SSL証明書の正しいパスを指定するか、SSLベースの認証を無効にする必要があります。

次のサンプルコードは、SSLベースの認証を設定する方法の例を示しています。

#include "oss_api.h"
# 「aos_http_io.h」を含める
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 * /
const char * endpoint = "yourEndpoint";

void init_options(oss_request_options_t * オプション)
{
    options->config = oss_config_create(options->pool);
    /* char * stringを使用して、aos_string_t型のデータを初期化します。 */
    aos_str_set(&options->config->endpoint, endpoint);
    /* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */  
    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"));
    /* CNAMEを使用するかどうかを指定します。 値0は、CNAMEが使用されないことを示す。 */
    options->config->is_cname = 0;
    /* ネットワークパラメータを指定します。 この関数の2番目のパラメーターは、ctlの所有権を指定します。 デフォルトでは、2番目のパラメーターの値は0です。 */
    options->ctl = aos_http_controller_create(options->pool, 0);

    /* SSLベースの認証を設定します。 */
    verify_sslパラメーターを設定して、SSLベースの認証を有効にするかどうかを指定します。 有効な値: 0と1。 デフォルト値は 1 です。 値1は、SSLベースの認証が有効であることを示します。 
    ca_pathパラメーターを設定して、CA証明書のルートパスを指定します。 このパラメーターは、verify_sslが1に設定されている場合に有効です。 デフォルトでは、このパラメータは空のままです。 
    ca_fileパラメーターを設定して、CA証明書のパスを指定します。 このパラメーターは、verify_sslが1に設定されている場合に有効です。 デフォルトでは、このパラメータは空のままです。 */
    /* SSLベースの認証を有効にし、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";

    /* SSLベースの認証を無効にします。 */
    // options->ctl->options->verify_ssl = 0;
}
int main() {
    aos_pool_t *p;
    oss_request_options_t *options;
    /* グローバル変数を初期化します。 グローバル変数を初期化する必要があるのは、プログラムのライフサイクルで1回だけです。 */
    if (aos_http_io_initialize(NULL, 0))! =AOSE_OK) {
        return -1;
    }
    /* メモリプールとオプションを初期化します。 */
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_options(options);
    /* ロジックコード。 この例では、論理コードは省略されている。 */
    /* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
    aos_pool_destroy(p);
    /* 割り当てられたグローバルリソースを解放します。 グローバルリソースをリリースする必要があるのは、プログラムのライフサイクル内で1回だけです。 */
    aos_http_io_deinitialize();
    0を返します。}