Help Center/ Object Storage Service/ SDK Reference/ BrowserJS/ Versioning Management/ Setting or Obtaining a Versioning Object ACL

Setting or Obtaining a Versioning Object ACL

Updated on 2024-04-26 GMT+08:00
NOTICE:

If you have any questions during development, post them on the Issues page of GitHub. For details about parameters and usage of each API, see the API Reference.

Directly Setting a Versioning Object ACL

You can call ObsClient.setObjectAcl and use the VersionId parameter to specify the ACL for a versioning object. Sample code is as follows:

// Create an instance of ObsClient.
var obsClient = new ObsClient({
    // Hard-coded or plaintext AK/SK are risky. For security purposes, encrypt your AK/SK and store them in the configuration file or environment variables. In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, configure environment variables AccessKeyID and SecretAccessKey.
    // The front-end code does not have the process environment variable, so you need to use a module bundler like webpack to define the process variable.
    // Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/eu/usermanual-ca/ca_01_0003.html.
    access_key_id: process.env.AccessKeyID,
    secret_access_key: process.env.SecretAccessKey,
    // Replace the example endpoint with the actual one in your case.
    server: 'https://obs.eu-west-101.myhuaweicloud.eu'
});

obsClient.setObjectAcl({
       Bucket : 'bucketname',
       Key : 'objectname',
       VersionId : 'versionid',
       // Set the versioning object ACL to public-read by specifying the pre-defined access control policy.
       ACL : obsClient.enums.AclPublicRead
}, function (err, result) {
       if(err){
              console.log('Error-->' + err);
       }else{
              console.log('Status-->' + result.CommonMsg.Status);
       }
});

obsClient.setObjectAcl({
       Bucket : 'bucketname',
       Key : 'objectname',
       VersionId : 'versionid',
       // Set the object owner.  
       Owner:{'ID':'ownerid'},
       Grants:[                                                      
                // Grant the READ and WRITE_ACP permission to all users.                       
               { Grantee:{Type : 'Group', URI : obsClient.enums.GroupAllUsers}, Permission : obsClient.enums.PermissionRead},                     
               { Grantee:{Type : 'Group', URI : obsClient.enums.GroupAllUsers}, Permission : obsClient.enums.PermissionWriteAcp}
       ]
}, function (err, result) {
       if(err){
              console.log('Error-->' + err);
       }else{
              console.log('Status-->' + result.CommonMsg.Status);
       }
});
NOTE:
  • Use the Owner parameter to specify the object owner and the Grants parameter to specify information about the authorized users.
  • The owner or grantee ID needed in the ACL indicates the account ID, which can be viewed on the My Credential page of OBS Console.
  • OBS buckets support the following grantee group:
    • All users: ObsClient.enums.GroupAllUsers

Obtaining a Versioning Object ACL

You can call ObsClient.getObjectAcl and specify the VersionId parameter to obtain the ACL of a versioning object. Sample code is as follows:

// Create an instance of ObsClient.
var obsClient = new ObsClient({
    // Hard-coded or plaintext AK/SK are risky. For security purposes, encrypt your AK/SK and store them in the configuration file or environment variables. In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, configure environment variables AccessKeyID and SecretAccessKey.
    // The front-end code does not have the process environment variable, so you need to use a module bundler like webpack to define the process variable.
    // Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/eu/usermanual-ca/ca_01_0003.html.
    access_key_id: process.env.AccessKeyID,
    secret_access_key: process.env.SecretAccessKey,
    // Replace the example endpoint with the actual one in your case.
    server: 'https://obs.eu-west-101.myhuaweicloud.eu'
});

obsClient.getObjectAcl({
       Bucket : 'bucketname',
       Key : 'objectname',
       VersionId : 'versionid'
}, function (err, result) {
       if(err){
              console.log('Error-->' + err);
       }else{
              console.log('Status-->' + result.CommonMsg.Status); 
              if(result.CommonMsg.Status < 300 && result.InterfaceResult){                            
                  console.log('Owner[ID]-->' + result.InterfaceResult.Owner.ID); 
                  console.log('Owner[Name]-->' + result.InterfaceResult.Owner.Name); 
                  for(var i in result.InterfaceResult.Grants){ 
                         console.log('Grant[' + i + ']:'); 
                         console.log('Grantee[ID]-->' + result.InterfaceResult.Grants[i]['Grantee']['ID']); 
                         console.log('Grantee[URI]-->' + result.InterfaceResult.Grants[i]['Grantee']['URI']); 
                         console.log('Permission-->'+ result.InterfaceResult.Grants[i]['Permission']); 
                  } 
              }
       }
});
Feedback

Feedback

Feedback

0/500

Selected Content

Submit selected content with the feedback