655
新東方
服務端__Media-C-SDK_SDK 參考_對象存儲 OSS-阿裏雲
OSS MEDIA C SDK分為客戶端,服務端和HLS三部分,下麵主要介紹服務端的相關操作,其他的操作請訪問後麵章節
接口
服務端相關的操作接口都位於oss_media.h中,目前提供的接口有:
- oss_media_create_bucket
- oss_media_delete_bucket
- oss_media_create_bucket_lifecycle
- oss_media_get_bucket_lifecycle
- oss_media_delete_bucket_lifecycle
- oss_media_delete_file
- oss_media_list_files
- oss_media_get_token
- oss_media_get_token_from_policy
下麵會詳細介紹各個接口的功能和注意事項
基礎結構體介紹
typedef struct oss_media_config_s {
char *endpoint;
int is_cname;
char *access_key_id;
char *access_key_secret;
char *role_arn;
} oss_media_config_t;
typedef struct oss_media_files_s {
char *path;
char *marker;
int max_size;
char *next_marker;
int size;
char **file_names;
} oss_media_files_t;
注:
- endpoint,比如oss-cn-hangzhou.aliyuncs.com。
- is_cname,是否使用了CNAME
- access_key_id,阿裏雲提供的訪問控製的access key id
- access_key_secret,阿裏雲提供的訪問控製的access key secret
- role_arn,阿裏雲訪問控製中創建的角色的Arn,具體位置在:訪問控製RAM控製台 -> 角色管理 -> 點擊相應角色名稱 -> 基本信息 -> Arn,格式類似於acs:ram::xxxxxx:role/yyyy。如果還沒有角色,需要創建一個新的角色,並賦予AliyunOSSFullAccess和AliyunSTSAssumeRoleAccess等權限。
- marker,設定結果從marker之後按字母排序的第一個開始返回。
- max_size,設定返回的最大數,取值不能大於1000。
- next_marker,下次執行時開始的位置
初始化
/**
* @brief 初始化oss media
* @note 在程序開始的時候應該首先調用此接口,初始化OSS MEDIA C SDK
* @return:
* 返回0時表示成功
* 否則, 表示出現了錯誤,可能導致失敗的原因包括:內存不足,apr、curl版本太低等
*/
int oss_media_init();
注:
- 示例代碼參考:GitHub
銷毀
/**
* @brief 銷毀oss meida
* @note 在程序結束的時候應該最後調用此接口,銷毀OSS MEDIA C SDK
*/
void oss_media_destroy();
注:
- 示例代碼參考:GitHub
創建存儲空間
/**
* @brief 創建新的存儲空間
* @paramp[in] oss_media_acl_t
* OSS_ACL_PRIVATE 私有讀寫
* OSS_ACL_PUBLIC_READ 公共讀,私有寫
* OSS_ACL_PUBLIC_READ_WRITE 公共讀寫
* @return:
* 返回0時表示成功
* 否則, 返回-1時表示出現了錯誤,可能導致失敗的原因包括:無法連接OSS,無權限等
*/
int oss_media_create_bucket(oss_media_config_t *config, const char *bucket_name, oss_media_acl_t acl);
示例程序:
static void init_media_config(oss_media_config_t *config) {
config->endpoint = "your endpoint";
config->access_key_id = "阿裏雲提供的access key id";
config->access_key_secret = "阿裏雲提供的access key secret";
config->role_arn = "阿裏雲訪問控製RAM提供的role arn";
config->is_cname = 0;
}
void create_bucket() {
int ret;
char *bucket_name;
oss_media_config_t config;
/* 初始化變量 */
bucket_name = "<your bucket name>";
init_media_config(&config);
/* 創建存儲空間 */
ret = oss_media_create_bucket(&config, bucket_name, OSS_ACL_PRIVATE);
if (0 == ret) {
printf("create bucket[%s] succeeded.n", bucket_name);
} else {
printf("create bucket[%s] failed.n", bucket_name);
}
}
注:
- 示例代碼參考:GitHub
刪除存儲空間
/*
* @brief 刪除存儲空間
* @return:
* 返回0時表示成功
* 否則, 返回-1時表示出現了錯誤,可能導致失敗的原因包括:無法連接OSS,無權限等
*/
int oss_media_delete_bucket(oss_media_config_t *config, const char *bucket_name);
示例程序:
void delete_bucket() {
int ret;
char *bucket_name;
oss_media_config_t config;
/* 初始化變量 */
bucket_name = "<your bucket name>";
init_media_config(&config);
/* 刪除存儲空間 */
ret = oss_media_delete_bucket(&config, bucket_name);
if (0 == ret) {
printf("delete bucket[%s] succeeded.n", bucket_name);
} else {
printf("delete bucket[%s] failed.n", bucket_name);
}
}
注:
- 示例代碼參考:GitHub
創建存儲生命周期規則
/**
* @brief 創建存儲空間生命周期規則
* @note 這些規則可以控製文件的自動刪除時間
* @return:
* 返回0時表示成功
* 否則, 返回-1時表示出現了錯誤,可能導致失敗的原因包括:無法連接OSS,無權限等
*/
int oss_media_create_bucket_lifecycle(oss_media_config_t *config, const char *bucket_name, oss_media_lifecycle_rules_t *rules);
示例程序:
void create_bucket_lifecycle() {
int ret;
char *bucket_name;
oss_media_lifecycle_rules_t *rules;
oss_media_config_t config;
/* 初始化變量 */
bucket_name = "<your bucket name>";
init_media_config(&config);
/* 創建生命周期規則 */
rules = oss_media_create_lifecycle_rules(2);
oss_media_lifecycle_rule_t rule1;
rule1.name = "example-1";
rule1.path = "/example/1";
rule1.status = "Enabled";
rule1.days = 1;
oss_media_lifecycle_rule_t rule2;
rule2.name = "example-2";
rule2.path = "/example/2";
rule2.status = "Disabled";
rule2.days = 2;
rules->rules[0] = &rule1;
rules->rules[1] = &rule2;
/* 設置存儲空間的生命周期規則 */
ret = oss_media_create_bucket_lifecycle(&config,
bucket_name, rules);
if (0 == ret) {
printf("create bucket[%s] lifecycle succeeded.n", bucket_name);
} else {
printf("create bucket[%s] lifecycle failed.n", bucket_name);
}
/* 釋放資源 */
oss_media_free_lifecycle_rules(rules);
}
注:
- 示例代碼參考:GitHub
獲取存儲空間的生命周期規則
/**
* @brief 獲取存儲空間的生命周期規則
* @return:
* 返回0時表示成功
* 否則, 返回-1時表示出現了錯誤,可能導致失敗的原因包括:無法連接OSS等
*/
int oss_media_get_bucket_lifecycle(oss_media_config_t *config, const char *bucket_name, oss_media_lifecycle_rules_t *rules);
示例程序:
void get_bucket_lifecycle() {
int ret, i;
char *bucket_name;
oss_media_lifecycle_rules_t *rules;
oss_media_config_t config;
/* 初始化變量 */
bucket_name = "<your bucket name>";
init_media_config(&config);
/* 獲取生命周期規則 */
rules = oss_media_create_lifecycle_rules(0);
ret = oss_media_get_bucket_lifecycle(&config, bucket_name, rules);
if (0 == ret) {
printf("get bucket[%s] lifecycle succeeded.n", bucket_name);
} else {
printf("get bucket[%s] lifecycle failed.n", bucket_name);
}
for (i = 0; i < rules->size; i++) {
printf(">>>> rule: [name:%s, path:%s, status=%s, days=%d]n",
rules->rules[i]->name, rules->rules[i]->path,
rules->rules[i]->status, rules->rules[i]->days);
}
/* 釋放資源 */
oss_media_free_lifecycle_rules(rules);
}
注:
- 示例代碼參考:GitHub
刪除存儲空間的生命周期規則
/**
* @brief 刪除存儲空間的生命周期規則
* @return:
* 返回0時表示成功
* 否則, 返回-1時表示出現了錯誤,可能導致失敗的原因包括:無法連接OSS,無權限等
*/
int oss_media_delete_bucket_lifecycle(oss_media_config_t *config, const char *bucket_name);
示例程序:
void delete_bucket_lifecycle()
{
int ret;
char *bucket_name;
oss_media_config_t config;
/* 初始化變量 */
bucket_name = "<your bucket name>";
init_media_config(&config);
/* 刪除生命周期規則 */
ret = oss_media_delete_bucket_lifecycle(&config, bucket_name);
if (0 == ret) {
printf("delete bucket[%s] lifecycle succeeded.n", bucket_name);
} else {
printf("delete bucket[%s] lifecycle failed.n", bucket_name);
}
}
注:
- 示例代碼參考:GitHub
刪除文件
/**
* @brief 刪除存儲空間中特定的文件
* @return:
* 返回0時表示成功
* 否則, 返回-1時表示出現了錯誤,可能導致失敗的原因包括:無法連接OSS,無權限等
*/
int oss_media_delete_file(oss_media_config_t *config, const char *bucket_name, const char *key);
示例程序:
void delete_file() {
int ret;
oss_media_config_t config;
char *file;
char *bucket_name;
/* 初始化變量 */
file = "oss_media_file";
bucket_name = "<your bucket name>";
init_media_config(&config);
/* 刪除文件 */
ret = oss_media_delete_file(&config, bucket_name, file);
if (0 == ret) {
printf("delete file[%s] succeeded.n", file);
} else {
printf("delete file[%s] lifecycle failed.n", file);
}
}
注:
- 示例代碼參考:GitHub
列出文件
/**
* @brief 列出特定存儲空間內的文件
* @return:
* 返回0時表示成功
* 否則, 返回-1時表示出現了錯誤,可能導致失敗的原因包括:無法連接OSS,無權限等
*/
int oss_media_list_files(oss_media_config_t *config, const char *bucket_name, oss_media_files_t *files);
示例程序:
void list_files() {
int ret, i;
char *bucket_name;
oss_media_files_t *files;
oss_media_config_t config;
/* 初始化變量 */
bucket_name = "<your bucket name>>";
init_media_config(&config);
files = oss_media_create_files();
files->max_size = 50;
/* 列舉文件 */
ret = oss_media_list_files(&config, bucket_name, files);
if (0 == ret) {
printf("list files succeeded.n");
} else {
printf("list files lifecycle failed.n");
}
for (i = 0; i < files->size; i++) {
printf(">>>>file name: %sn", files->file_names[i]);
}
/* 釋放資源 */
oss_media_free_files(files);
}
注:
- 示例代碼參考:GitHub
獲取臨時token
/*
* @brief 獲取臨時token
* @param[in]:
mode:
* 'r': 讀模式
* 'w': 覆蓋寫模式
* 'a': 追加寫模式
* expiration: 臨時token的有效時間,最小15分鍾,最長1小時,單位秒
* @return:
* 返回0時表示成功
* 否則, 返回-1時表示出現了錯誤,可能導致失敗的原因包括:無法連接阿裏雲STS服務,沒有開通RAM、STS,沒有創建Role,參數不合法等
*/
int oss_media_get_token(oss_media_config_t *config,
const char *bucket_name,
const char *path,
const char *mode,
int64_t expiration,
oss_media_token_t *token);
示例程序:
void get_token() {
int ret;
char *bucket_name;
oss_media_token_t token;
oss_media_config_t config;
/* 初始化變量 */
bucket_name = "<your bucket name>";
init_media_config(&config);
/* 獲取臨時token */
ret = oss_media_get_token(&config, bucket_name, "/*", "rwa",
3600, &token);
if (0 == ret) {
printf("get token succeeded, access_key_id=%s, access_key_secret=%s, token=%sn",
token.tmpAccessKeyId, token.tmpAccessKeySecret, token.securityToken);
} else {
printf("get token failed.n");
}
}
注:
- 示例代碼參考:GitHub
通過自定義policy獲取token
/**
* @brief 通過指定自定義的policy獲取token
* @param[in]:
* expiration: 臨時token的有效時間,最小15分鍾,最長1小時,單位秒
* @return:
* 返回0時表示成功
* 否則, 返回-1時表示出現了錯誤,可能導致失敗的原因包括:無法連接阿裏雲STS服務,沒有開通RAM、STS,沒有創建Role,參數不合法等
*/
int oss_media_get_token_from_policy(oss_media_config_t *config,
const char *policy,
int64_t expiration,
oss_media_token_t *token);
示例程序:
void get_token_from_policy() {
int ret;
oss_media_token_t token;
char *policy;
oss_media_config_t config;
/* 初始化變量 */
init_media_config(&config);
/* 設置自定義policy */
policy = "{"Version":"1","Statement":[{"Effect":"Allow", "
""Action":"*", "Resource":"*"}]}";
/* 獲取token */
ret = oss_media_get_token_from_policy(&config, policy, 3600, &token);
if (0 == ret) {
printf("get token succeeded, access_key_id=%s, access_key_secret=%s, token=%sn",
token.tmpAccessKeyId, token.tmpAccessKeySecret, token.securityToken);
} else {
printf("get token failed.n");
}
}
注:
- 示例代碼參考:GitHub
最後更新:2016-11-23 17:16:08
上一篇:
錯誤__Go-SDK_SDK 參考_對象存儲 OSS-阿裏雲
下一篇:
HLS基礎接口__Media-C-SDK_SDK 參考_對象存儲 OSS-阿裏雲
某政務網站性能優化__最佳實踐_性能測試-阿裏雲
取消遷移__數據遷移_API 參考_雲數據庫 RDS 版-阿裏雲
使用準備__SDK使用參考_設備端接入手冊_阿裏雲物聯網套件-阿裏雲
鏡像產品安全審核標準__商品接入_服務商_雲市場-阿裏雲
公共參數__調用方式_API使用手冊_消息服務-阿裏雲
企業子賬號管理與分權__使用場景_用戶指南_訪問控製-阿裏雲
直播API概述__直播API_API及SDK_視頻直播-阿裏雲
iOS版Google Authenticator安裝及使用指導__附錄2: Google Authenticator安裝及使用指導_用戶指南_訪問控製-阿裏雲
什麼是大數據開發套件__產品簡介_大數據開發套件-阿裏雲
配置監聽__實例管理_用戶指南_負載均衡-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲