多版本对象权限

更新时间: 2019-03-14 10:05

设置多版本对象访问权限

您可以通过ObsClient.SetObjectAcl接口传入版本号(VersionId)设置多版本对象的访问权限,示例代码如下:

  1. // 引入依赖包
  2. import (
  3. "fmt"
  4. "obs"
  5. )
  6.  
  7. var ak = "*** Provide your Access Key ***"
  8. var sk = "*** Provide your Secret Key ***"
  9. var endpoint = "https://your-point"
  10.  
  11. // 创建ObsClient结构体
  12. var obsClient, _ = obs.New(ak, sk, endpoint)
  13.  
  14. func main() {
  15. input := &obs.SetObjectAclInput{}
  16. input.Bucket = "bucketname"
  17. input.Key = "objectkey"
  18. input.VersionId = "versionid"
  19.  
  20. // 通过预定义访问策略设置指定版本对象的访问权限为公共读
  21. input.ACL = obs.AclPublicRead
  22. output, err := obsClient.SetObjectAcl(input)
  23. if err == nil {
  24. fmt.Printf("RequestId:%s\n", output.RequestId)
  25. } else if obsError, ok := err.(obs.ObsError); ok {
  26. fmt.Printf("Code:%s\n", obsError.Code)
  27. fmt.Printf("Message:%s\n", obsError.Message)
  28. }
  29.  
  30. // 直接设置指定版本对象的访问权限
  31. input.Owner.ID = "ownerid"
  32. var grants [3]obs.Grant
  33. // 为所有用户设置写权限
  34. grants[0].Grantee.Type = obs.GranteeGroup
  35. grants[0].Grantee.URI = obs.GroupAllUsers
  36. grants[0].Permission = obs.PermissionWrite
  37.  
  38. // 为指定用户设置完全控制权限
  39. grants[1].Grantee.Type = obs.GranteeUser
  40. grants[1].Grantee.ID = "granteeid"
  41. grants[1].Permission = obs.PermissionFullControl
  42.  
  43. // 为所有用户设置读权限
  44. grants[2].Grantee.Type = obs.GranteeGroup
  45. grants[2].Grantee.URI = obs.GroupAllUsers
  46. grants[2].Permission = obs.PermissionRead
  47. input.Grants = grants[0:3]
  48.  
  49. output, err = obsClient.SetObjectAcl(input)
  50. if err == nil {
  51. fmt.Printf("RequestId:%s\n", output.RequestId)
  52. } else if obsError, ok := err.(obs.ObsError); ok {
  53. fmt.Printf("Code:%s\n", obsError.Code)
  54. fmt.Printf("Message:%s\n", obsError.Message)
  55. }
  56. }

多版本对象权限 - 图1 说明:

所有者ID或者被授权用户ID,是指用户的账户ID,可通过OBS控制台“我的凭证”页面查看。

获取多版本对象访问权限

您可以通过ObsClient.GetObjectAcl接口传入版本号(VersionId)获取多版本对象的访问权限,示例代码如下:

  1. // 引入依赖包
  2. import (
  3. "fmt"
  4. "obs"
  5. )
  6.  
  7. var ak = "*** Provide your Access Key ***"
  8. var sk = "*** Provide your Secret Key ***"
  9. var endpoint = "https://your-endpoint"
  10.  
  11. // 创建ObsClient结构体
  12. var obsClient, _ = obs.New(ak, sk, endpoint)
  13.  
  14. func main() {
  15. input := &obs.GetObjectAclInput{}
  16. input.Bucket = "bucketname"
  17. input.Key = "objectkey"
  18. input.VersionId = "versionid"
  19.  
  20. output, err := obsClient.GetObjectAcl(input)
  21. if err == nil {
  22. fmt.Printf("Owner.ID:%s\n", output.Owner.ID)
  23. for index, grant := range output.Grants {
  24. fmt.Printf("Grant[%d]-Type:%s, ID:%s, URI:%s, Permission:%s\n", index, grant.Grantee.Type, grant.Grantee.ID, grant.Grantee.URI, grant.Permission)
  25. }
  26. } else if obsError, ok := err.(obs.ObsError); ok {
  27. fmt.Printf("Code:%s\n", obsError.Code)
  28. fmt.Printf("Message:%s\n", obsError.Message)
  29. }
  30. }

父主题:多版本控制