GCP Go SDK设置日志桶Legacy Bucket Writer ACL报错400如何解决
GCS Go SDK配置日志桶ACL报错400问题解决
问题原因
- GCS ACL的自定义授权实体需要显式指定类型前缀,你直接传入
cloud-storage-analytics@google.com邮箱时,SDK无法识别该实体的具体类型,因此触发Invalid Value错误。 - 常用的实体类型前缀如下:
- 谷歌群组:
group: - 个人用户邮箱:
user: - 服务账号:
serviceAccount: - 企业域名:
domain:
- 谷歌群组:
storage.AllAuthenticatedUsers属于GCS预定义的公共实体标识符,本身已经携带类型含义,不需要额外加前缀,因此可以正常执行。- 你使用的gsutil命令中
-g参数已经显式声明该实体为群组类型,因此命令可以正常生效。
解决方案
给授权实体邮箱加上group:前缀即可,修改后的代码示例:
bucket_log := client.Bucket(logBucketName) if err := bucket_log.ACL().Set(ctx, "group:cloud-storage-analytics@google.com", storage.RoleWriter); err != nil { return fmt.Errorf("Failed to Give ACL access on Logging bucket %s.\nError: %s", logBucketName, err.Error()) }
内容的提问来源于stack exchange,提问作者ARKhan
相关产品推荐
相关产品推荐

