详情页标题前

腾讯云对象存储访问控制

详情页1

简介

文档提供关于存储桶、对象的访问控制列表(ACL)的相关 API 概览以及 SDK 示例代码。存储桶 ACL

API 操作名 操作描述
PUT Bucket acl 设置存储桶 ACL 设置指定存储桶的访问权限控制列表(ACL)
GET Bucket acl 查询存储桶 ACL 获取指定存储桶的访问权限控制列表(ACL)

对象 ACL

API 操作名 操作描述
PUT Object acl 设置对象 ACL 设置 Bucket 中某个 Object (文件/对象)的 ACL
GET Object acl 查询对象 ACL 查询 Object(文件/对象)的 ACL

存储桶 ACL

设置存储桶 ACL

功能说明

设置指定存储桶的访问权限控制列表(ACL)。

方法原型

cos_status_t *cos_put_bucket_acl(const cos_request_options_t *options,                                  const cos_string_t *bucket,                                  cos_acl_e cos_acl,                                 const cos_string_t *grant_read,                                 const cos_string_t *grant_write,                                 const cos_string_t *grant_full_ctrl,                                 cos_table_t **resp_headers);

参数说明

参数名称 参数描述 类型
options COS 请求选项 Struct
bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
cos_acl 允许用户自定义权限。有效值:COS_ACL_PRIVATE(0),COS_ACL_PUBLIC_READ(1),COS_ACL_PUBLIC_READ_WRITE(2)默认值:COS_ACL_PRIVATE(0) Enum
grant_read 读权限授予者 String
grant_write 写权限授予者 String
grant_full_ctrl 读写权限授予者 String
resp_headers 返回 HTTP 响应消息的头域 Struct

返回结果说明

返回结果 描述 类型
code 错误码 Int
error_code 错误码内容 String
error_msg 错误码描述 String
req_id 请求消息 ID String

示例

#include "cos_http_io.h"#include "cos_api.h"#include "cos_log.h"
// endpoint 是 COS 访问域名信息,详情请参见 https://cloud.tencent.com/document/product/436/6224 文档static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";// 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取static char *TEST_ACCESS_KEY_ID; //your secret_idstatic char *TEST_ACCESS_KEY_SECRET; //your secret_key// 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取static char TEST_APPID[] = ""; //your appid//the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看static char TEST_BUCKET_NAME[] = "";
void log_status(cos_status_t *s){ cos_warn_log("status->code: %d", s->code); if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code); if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg); if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);}
void init_test_config(cos_config_t *config, int is_cname){ cos_str_set(&config->endpoint, TEST_COS_ENDPOINT); cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID); cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET); cos_str_set(&config->appid, TEST_APPID); config->is_cname = is_cname;}
void init_test_request_options(cos_request_options_t *options, int is_cname){ options->config = cos_config_create(options->pool); init_test_config(options->config, is_cname); options->ctl = cos_http_controller_create(options->pool, 0);}
void test_put_bucket_acl(){ cos_pool_t *p = NULL; int is_cname = 0; cos_status_t *s = NULL; cos_request_options_t *options = NULL; cos_string_t bucket; cos_acl_e cos_acl = COS_ACL_PRIVATE; //替换为您自己的配置 cos_table_t *resp_headers = NULL;
//创建内存池 cos_pool_create(&p, NULL);
//初始化请求选项 options = cos_request_options_create(p); init_test_request_options(options, is_cname); cos_str_set(&bucket, TEST_BUCKET_NAME);
//设置存储桶 ACL cos_string_t read; cos_str_set(&read, "id=\"qcs::cam::uin/100000000001:uin/100000000001\", id=\"qcs::cam::uin/100000000011:uin/100000000011\""); s = cos_put_bucket_acl(options, &bucket, cos_acl, &read, NULL, NULL, &resp_headers); if (cos_status_is_ok(s)) { printf("put bucket acl succeeded\n"); } else { printf("put bucket acl failed\n"); }
//销毁内存池 cos_pool_destroy(p); }
int main(int argc, char *argv[]){ // 通过环境变量获取 SECRETID 和 SECRETKEY TEST_ACCESS_KEY_ID = getenv("COS_SECRETID"); TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
if (cos_http_io_initialize(NULL, 0) != COSE_OK) { exit(1); }
//set log level, default COS_LOG_WARN cos_log_set_level(COS_LOG_WARN);
//set log output, default stderr cos_log_set_output(NULL);
test_put_bucket_acl();
cos_http_io_deinitialize();
return 0;}

查询存储桶 ACL

功能说明

获取指定存储桶的访问权限控制列表(ACL)。

方法原型

cos_status_t *cos_get_bucket_acl(const cos_request_options_t *options,                                  const cos_string_t *bucket,                                  cos_acl_params_t *acl_param,                                  cos_table_t **resp_headers)

参数说明

参数名称 参数描述 类型
options COS 请求选项 Struct
bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
acl_param 请求操作参数 Struct
owner_id 请求操作返回的存储桶持有者 ID String
owner_name 请求操作返回的存储桶持有者的名称 String
object_list 请求操作返回的被授权者信息与权限信息 Struct
type 请求操作返回的被授权者账户类型 String
id 请求操作返回的被授权者用户 ID String
name 请求操作返回的被授权者用户名称 String
permission 请求操作返回的被授权者权限信息 String
resp_headers 返回 HTTP 响应消息的头域 Struct

返回结果说明

返回结果 描述 类型
code 错误码 Int
error_code 错误码内容 String
error_msg 错误码描述 String
req_id 请求消息 ID String

示例

#include "cos_http_io.h"#include "cos_api.h"#include "cos_log.h"
// endpoint 是 COS 访问域名信息,详情请参见 https://cloud.tencent.com/document/product/436/6224 文档static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";// 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取static char *TEST_ACCESS_KEY_ID; //your secret_idstatic char *TEST_ACCESS_KEY_SECRET; //your secret_key// 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取static char TEST_APPID[] = ""; //your appid//the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看static char TEST_BUCKET_NAME[] = "";
void log_status(cos_status_t *s){ cos_warn_log("status->code: %d", s->code); if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code); if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg); if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);}
void init_test_config(cos_config_t *config, int is_cname){ cos_str_set(&config->endpoint, TEST_COS_ENDPOINT); cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID); cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET); cos_str_set(&config->appid, TEST_APPID); config->is_cname = is_cname;}
void init_test_request_options(cos_request_options_t *options, int is_cname){ options->config = cos_config_create(options->pool); init_test_config(options->config, is_cname); options->ctl = cos_http_controller_create(options->pool, 0);}
void test_get_bucket_acl(){ cos_pool_t *p = NULL; int is_cname = 0; cos_status_t *s = NULL; cos_request_options_t *options = NULL; cos_string_t bucket; cos_table_t *resp_headers = NULL;
//创建内存池 cos_pool_create(&p, NULL);
//初始化请求选项 options = cos_request_options_create(p); init_test_request_options(options, is_cname); cos_str_set(&bucket, TEST_BUCKET_NAME);
//获取存储桶 ACL cos_acl_params_t *acl_params = NULL; acl_params = cos_create_acl_params(p); s = cos_get_bucket_acl(options, &bucket, acl_params, &resp_headers); if (cos_status_is_ok(s)) { printf("get bucket acl succeeded\n"); printf("acl owner id:%s, name:%s\n", acl_params->owner_id.data, acl_params->owner_name.data); cos_acl_grantee_content_t *acl_content = NULL; cos_list_for_each_entry(cos_acl_grantee_content_t, acl_content, &acl_params->grantee_list, node) { printf("acl grantee type:%s, id:%s, name:%s, permission:%s\n", acl_content->type.data, acl_content->id.data, acl_content->name.data, acl_content->permission.data); } } else { printf("get bucket acl failed\n"); }
//销毁内存池 cos_pool_destroy(p); }
int main(int argc, char *argv[]){ // 通过环境变量获取 SECRETID 和 SECRETKEY TEST_ACCESS_KEY_ID = getenv("COS_SECRETID"); TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
if (cos_http_io_initialize(NULL, 0) != COSE_OK) { exit(1); }
//set log level, default COS_LOG_WARN cos_log_set_level(COS_LOG_WARN);
//set log output, default stderr cos_log_set_output(NULL);
test_get_bucket_acl();
cos_http_io_deinitialize();
return 0;}

对象 ACL

设置对象 ACL

功能说明

设置指定对象访问权限控制列表(ACL)(PUT Object acl)。

方法原型

cos_status_t *cos_put_object_acl(const cos_request_options_t *options,                                  const cos_string_t *bucket,                                 const cos_string_t *object,                                   cos_acl_e cos_acl,                                 const cos_string_t *grant_read,                                 const cos_string_t *grant_write,                                 const cos_string_t *grant_full_ctrl,                                 cos_table_t **resp_headers);

参数说明

参数名称 参数描述 类型
options COS 请求选项 Struct
bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
object Object 名称 String
cos_acl 允许用户自定义权限。有效值:COS_ACL_PRIVATE(0),COS_ACL_PUBLIC_READ(1), COS_ACL_PUBLIC_READ_WRITE(2)默认值:COS_ACL_PRIVATE(0) Enum
grant_read 赋予被授权者读取对象的权限,格式为 id=”[OwnerUin]”,例如 id=”100000000001″,可使用半角逗号(,)分隔多组被授权者,例如id="100000000001",id="100000000002" String
grant_write 赋予被授权者写入对象的权限,格式为 id=”[OwnerUin]”,例如 id=”100000000001″,可使用半角逗号(,)分隔多组被授权者,例如id="100000000001",id="100000000002" String
grant_full_ctrl 赋予被授权者操作对象的所有权限,格式为 id=”[OwnerUin]”,例如 id=”100000000001″,可使用半角逗号(,)分隔多组被授权者,例如id="100000000001",id="100000000002" String
resp_headers 返回 HTTP 响应消息的头域 Struct

说明详情请参见 API 文档 PUT Object aclACL 概述

返回结果说明

返回结果 描述 类型
code 错误码 Int
error_code 错误码内容 String
error_msg 错误码描述 String
req_id 请求消息 ID String

示例

#include "cos_http_io.h"#include "cos_api.h"#include "cos_log.h"
// endpoint 是 COS 访问域名信息,详情请参见 https://cloud.tencent.com/document/product/436/6224 文档static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";// 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取static char *TEST_ACCESS_KEY_ID; //your secret_idstatic char *TEST_ACCESS_KEY_SECRET; //your secret_key// 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取static char TEST_APPID[] = ""; //your appid//the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看static char TEST_BUCKET_NAME[] = "";// 对象键,对象(Object)在存储桶(Bucket)中的唯一标识。有关对象与对象键的进一步说明,请参见 https://cloud.tencent.com/document/product/436/13324 文档static char TEST_OBJECT_NAME1[] = "1.txt";
void log_status(cos_status_t *s){ cos_warn_log("status->code: %d", s->code); if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code); if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg); if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);}
void init_test_config(cos_config_t *config, int is_cname){ cos_str_set(&config->endpoint, TEST_COS_ENDPOINT); cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID); cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET); cos_str_set(&config->appid, TEST_APPID); config->is_cname = is_cname;}
void init_test_request_options(cos_request_options_t *options, int is_cname){ options->config = cos_config_create(options->pool); init_test_config(options->config, is_cname); options->ctl = cos_http_controller_create(options->pool, 0);}
void test_put_object_acl(){ cos_pool_t *p = NULL; int is_cname = 0; cos_status_t *s = NULL; cos_request_options_t *options = NULL; cos_string_t bucket; cos_string_t object; cos_acl_e cos_acl = COS_ACL_PRIVATE; //替换为您自己的配置 cos_table_t *resp_headers = NULL;
//创建内存池 cos_pool_create(&p, NULL);
//初始化请求选项 options = cos_request_options_create(p); init_test_request_options(options, is_cname); cos_str_set(&bucket, TEST_BUCKET_NAME);
//设置对象 ACL,替换您自己的acl配置 cos_str_set(&object, TEST_OBJECT_NAME1); cos_string_t read; cos_str_set(&read, "id=\"qcs::cam::uin/12345:uin/12345\", id=\"qcs::cam::uin/45678:uin/45678\""); s = cos_put_object_acl(options, &bucket, &object, cos_acl, &read, NULL, NULL, &resp_headers); if (cos_status_is_ok(s)) { printf("put object acl succeeded\n"); } else { printf("put object acl failed\n"); }
//销毁内存池 cos_pool_destroy(p); }
int main(int argc, char *argv[]){ // 通过环境变量获取 SECRETID 和 SECRETKEY TEST_ACCESS_KEY_ID = getenv("COS_SECRETID"); TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
if (cos_http_io_initialize(NULL, 0) != COSE_OK) { exit(1); }
//set log level, default COS_LOG_WARN cos_log_set_level(COS_LOG_WARN);
//set log output, default stderr cos_log_set_output(NULL);
test_put_object_acl();
cos_http_io_deinitialize();
return 0;}

查询对象 ACL

功能说明

查询指定对象的访问权限控制列表(GET Object acl)。

方法原型

cos_status_t *cos_get_object_acl(const cos_request_options_t *options,                                  const cos_string_t *bucket,                                 const cos_string_t *object,                                 cos_acl_params_t *acl_param,                                  cos_table_t **resp_headers)

参数说明

参数名称 参数描述 类型
options COS 请求选项 Struct
bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
object Object 名称 String
acl_param 请求操作参数 Struct
owner_id 请求操作返回的 Bucket 持有者 ID String
owner_name 请求操作返回的 Bucket 持有者的名称 String
object_list 请求操作返回的被授权者信息与权限信息 Struct
type 请求操作返回的被授权者账户类型 String
id 请求操作返回的被授权者用户 ID String
name 请求操作返回的被授权者用户名称 String
permission 请求操作返回的被授权者权限信息 String
resp_headers 返回 HTTP 响应消息的头域 Struct

返回结果说明

返回结果 描述 类型
code 错误码 Int
error_code 错误码内容 String
error_msg 错误码描述 String
req_id 请求消息 ID String

示例

#include "cos_http_io.h"#include "cos_api.h"#include "cos_log.h"
// endpoint 是 COS 访问域名信息,详情请参见 https://cloud.tencent.com/document/product/436/6224 文档static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";// 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取static char *TEST_ACCESS_KEY_ID; //your secret_idstatic char *TEST_ACCESS_KEY_SECRET; //your secret_key// 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取static char TEST_APPID[] = ""; //your appid//the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看static char TEST_BUCKET_NAME[] = "";// 对象键,对象(Object)在存储桶(Bucket)中的唯一标识。有关对象与对象键的进一步说明,请参见 https://cloud.tencent.com/document/product/436/13324 文档static char TEST_OBJECT_NAME1[] = "1.txt";
void log_status(cos_status_t *s){ cos_warn_log("status->code: %d", s->code); if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code); if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg); if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);}
void init_test_config(cos_config_t *config, int is_cname){ cos_str_set(&config->endpoint, TEST_COS_ENDPOINT); cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID); cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET); cos_str_set(&config->appid, TEST_APPID); config->is_cname = is_cname;}
void init_test_request_options(cos_request_options_t *options, int is_cname){ options->config = cos_config_create(options->pool); init_test_config(options->config, is_cname); options->ctl = cos_http_controller_create(options->pool, 0);}
void test_get_object_acl(){ cos_pool_t *p = NULL; int is_cname = 0; cos_status_t *s = NULL; cos_request_options_t *options = NULL; cos_string_t bucket; cos_string_t object; cos_acl_grantee_content_t *acl_content = NULL; cos_table_t *resp_headers = NULL;
//创建内存池 cos_pool_create(&p, NULL);
//初始化请求选项 options = cos_request_options_create(p); init_test_request_options(options, is_cname); cos_str_set(&bucket, TEST_BUCKET_NAME); cos_str_set(&object, TEST_OBJECT_NAME1);
//获取对象 ACL cos_acl_params_t *acl_params2 = NULL; acl_params2 = cos_create_acl_params(p); s = cos_get_object_acl(options, &bucket, &object, acl_params2, &resp_headers); if (cos_status_is_ok(s)) { printf("get object acl succeeded\n"); printf("acl owner id:%s, name:%s\n", acl_params2->owner_id.data, acl_params2->owner_name.data); acl_content = NULL; cos_list_for_each_entry(cos_acl_grantee_content_t, acl_content, &acl_params2->grantee_list, node) { printf("acl grantee id:%s, name:%s, permission:%s\n", acl_content->id.data, acl_content->name.data, acl_content->permission.data); } } else { printf("get object acl failed\n"); }
//销毁内存池 cos_pool_destroy(p); }
int main(int argc, char *argv[]){ // 通过环境变量获取 SECRETID 和 SECRETKEY TEST_ACCESS_KEY_ID = getenv("COS_SECRETID"); TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
if (cos_http_io_initialize(NULL, 0) != COSE_OK) { exit(1); }
//set log level, default COS_LOG_WARN cos_log_set_level(COS_LOG_WARN);
//set log output, default stderr cos_log_set_output(NULL);
test_get_object_acl();
cos_http_io_deinitialize();
return 0;}



对象存储官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/145462.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云对象存储存储桶标签

    简介 本文档提供关于存储桶标签的 API 概览以及 SDK 示例代码。 API 操作名 操作描述 PUT Bucket tagging 设置存储桶标签 为已存在的存储桶设置标签 GET Bucket tagging 查询存储桶标签 查询指定存储桶下已有的存储桶标签 DELETE Bucket tagging 删除存储桶标签 删除指定的存储桶标签 SDK AP…

    腾讯云 2023年12月9日
  • 腾讯云对象存储模板接口

    简介 本文档提供关于模板接口的 API 概览以及 SDK 示例代码。说明:阅读本文档前请先打开示例代码  创建模板 接口文档及示例函数名 API 文档 示例函数名 创建音视频转码模板 ci_create_transcode_template 创建极速高清转码模板 ci_create_high_speed_hd_template 创建精彩集锦模板…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云自动化助手常见问题

    什么是自动化助手? 自动化助手(TencentCloud Automation Tools,TAT)是云服务器原生的运维部署工具,支持可视化控制台和 API 操作。通过自动化助手,您无需远程连接实例即可批量执行 Shell 命令。 如何使用自动化助手? 您可以通过轻量应用服务器控制台创建及执行命令,详情请参见 快速入门。 自动化助手支持哪些操作系统类型? 自…

    腾讯云 2023年12月9日
  • 腾讯云云函数(SCF)函数并发管理实践-云淘科技

    操作场景 腾讯云 Serverless 云函数已上线并发管理能力升级版,该升级版提供3个维度的并发额度管理功能。通过该功能,可以获得更强的函数并发管理控制权限,无需再等待申请云函数配额即可自行根据业务需求快速调整。说明目前 函数并发 管理功能已上线,函数可以配置 最大独占配额。另外 预置并发 功能目前处于内测阶段,如需体验您可以填写 预置并发功能内测申请表 …

    2023年12月9日
  • 腾讯云云函数(SCF)使用方法-云淘科技

    本篇文档将为您指导,如何创建 Ckafka 触发器并完成函数的调用。 步骤1:创建函数 1. 登录 Serverless 控制台。2. 在新建函数页面,选择使用模板创建来新建函数,在搜索框里筛选Ckafka,选择“Ckafka 消息转储至 COS”。如下图所示:n 3. 单击下一步。 步骤2:配置触发器 在函数配置页面,填写函数基础配置。1. 在“触发器…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。