Bucket权限控制
更新时间:2022-10-21
设置Bucket的访问权限
基本流程
- 创建BOSClient类的实例;
- 执行BOSClient putBucketACL方法;
- 设置失败时会产生错误。
示例代码
Swift
1BOSPutBucketAclRequest* request = [[BOSPutBucketAclRequest alloc] init];
2request.cannedAcl = BOS_ACL_PUBLIC_READ;
3request.bucket = @"<bucketname>";
4
5__block BOSPutBucketAclResponse* response = nil;
6BCETask* task = [client putBucketACL:request];
7task.then(^(BCEOutput* output) {
8 if (output.response) {
9 response = (BOSPutBucketAclResponse*)output.response;
10 NSLog(@"pub bucket acl success!");
11 }
12
13 if (output.error) {
14 NSLog(@"pub bucket acl failure with %@", output.error);
15 }
16});
17[task waitUtilFinished];
说明:cannedAcl 字段可取3个值:
Private
、PublicRead
和PublicReadWrite
,它们分别对应相关权限,具体内容可以参考《BOS API文档 使用CannedAcl方式的权限控制》。
完整示例
Swift
1#import <BaiduBCEBasic/BaiduBCEBasic.h>
2#import <BaiduBCEBOS/BaiduBCEBOS.h>
3
4void example(void) {
5// 初始化
6BCECredentials* credentials = [[BCECredentials alloc] init];
7credentials.accessKey = @"<access key>";
8credentials.secretKey = @"<secret key>";
9BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
10configuration.credentials = credentials;
11
12BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
13
14BOSPutBucketAclRequest* request = [[BOSPutBucketAclRequest alloc] init];
15request.cannedAcl = BOS_ACL_PUBLIC_READ;
16request.bucket = @"<bucketname>";
17
18__block BOSPutBucketAclResponse* response = nil;
19BCETask* task = [client putBucketACL:request];
20task.then(^(BCEOutput* output) {
21 if (output.response) {
22 response = (BOSPutBucketAclResponse*)output.response;
23 NSLog(@"pub bucket acl success!");
24 }
25
26 if (output.error) {
27 NSLog(@"pub bucket acl failure with %@", output.error);
28 }
29});
30[task waitUtilFinished];
31}
设置指定用户对Bucket的访问权限
基本流程
- 创建BOSClient类的实例。
- 执行putBucketACL方法,您需要创建一个BOSPutBucketAclRequest的实例来提供授权用户信息。
- 设置失败时会抛出异常。
示例代码
Swift
1#import <BaiduBCEBasic/BaiduBCEBasic.h>
2#import <BaiduBCEBOS/BaiduBCEBOS.h>
3
4void example(void) {
5 // 初始化
6 BCECredentials* credentials = [[BCECredentials alloc] init];
7 credentials.accessKey = @"<access key>";
8 credentials.secretKey = @"<secret key>";
9 BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
10 configuration.credentials = credentials;
11
12 BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
13 NSArray<NSString*>* grantee = @[
14 @"<grantee1>",
15 @"<grantee2>"
16 ];
17
18 NSArray<NSString*>* permission = @[
19 [BOSGrant permissionToString:BOSBucketGranteePermissionRead],
20 [BOSGrant permissionToString:BOSBucketGranteePermissionList],
21 ];
22
23 BOSGrant* grant = [[BOSGrant alloc] init];
24 grant.granteeIDArray = grantee;
25 grant.permission = permission;
26 BOSPutBucketAclRequest* request = [[BOSPutBucketAclRequest alloc] init];
27 request.acl = [[BOSACL alloc] init];
28 request.acl.grantees = @[grant];
29 request.bucket = @"<bucketname>";
30
31 __block BOSPutBucketAclResponse* response = nil;
32 BCETask* task = [client putBucketACL:request];
33 task.then(^(BCEOutput* output) {
34 if (output.response) {
35 response = (BOSPutBucketAclResponse*)output.response;
36 NSLog(@"pub bucket acl success!");
37 }
38
39 if (output.error) {
40 NSLog(@"pub bucket acl failure with %@", output.error);
41 }
42 });
43 [task waitUtilFinished];
44}
注意:Permission中的权限设置包含三个值:
READ
、WRITE
、LIST
、GetObject
和FULL_CONTROL
,它们分别对应相关权限,具体内容可以参考《BOS API文档 上传ACL文件方式的权限控制》。
完整示例
Swift
1#import <BaiduBCEBasic/BaiduBCEBasic.h>
2#import <BaiduBCEBOS/BaiduBCEBOS.h>
3
4void example(void) {
5// 初始化
6BCECredentials* credentials = [[BCECredentials alloc] init];
7credentials.accessKey = @"<access key>";
8credentials.secretKey = @"<secret key>";
9BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
10configuration.credentials = credentials;
11
12BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
13 NSArray<NSString*>* grantee = @[
14 @"<grantee1>",
15 @"<grantee2>"
16];
17
18NSArray<NSString*>* permission = @[
19 [BOSGrant permissionToString:BOSBucketGranteePermissionRead],
20 [BOSGrant permissionToString:BOSBucketGranteePermissionList],
21];
22
23BOSGrant* grant = [[BOSGrant alloc] init];
24grant.granteeIDArray = grantee;
25grant.permission = permission;
26BOSPutBucketAclRequest* request = [[BOSPutBucketAclRequest alloc] init];
27request.acl = @[grant];
28request.bucket = @"<bucketname>";
29
30__block BOSPutBucketAclResponse* response = nil;
31BCETask* task = [client putBucketACL:request];
32task.then(^(BCEOutput* output) {
33 if (output.response) {
34 response = (BOSPutBucketAclResponse*)output.response;
35 NSLog(@"pub bucket acl success!");
36 }
37
38 if (output.error) {
39 NSLog(@"pub bucket acl failure with %@", output.error);
40 }
41});
42[task waitUtilFinished];
43}