我通过Java和服务帐户使用GCS JSON API。我插入对象,删除对象和复制对象的代码都很有效。我可以使用storage.buckets()。insert()创建新的桶,只要根据我的域名,桶名称是 NOT (即创建桶“454393-test-bucket”,但创建存储桶“test334.domain.com”不起作用)。请注意,我 CAN 在以项目所有者身份登录时从开发人员控制台创建基于域名的存储桶,没有任何问题,也可以稍后通过服务帐户插入/复制/删除该存储桶中的对象。 / p>
必须有一些基本的我做错了。
这是我的代码:
Bucket newBucket = new Bucket().setName(bucketName);
storage.buckets().insert(Utils.GAE_PROJECT_NAME, newBucket).execute();
这是我得到的错误:
Uncaught exception from servlet
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "The bucket you tried to create is a domain name owned by another user.",
"reason" : "forbidden"
} ],
"message" : "The bucket you tried to create is a domain name owned by another user."
}
答案 0 :(得分:1)
验证存储区所有权的帐户必须与创建存储区的帐户相同。如果您的帐户是您所在域的经过验证的所有者,则必须使用您的帐户创建存储分区(而不是您帐户所拥有的项目所拥有的服务帐户)。当您从开发人员控制台创建存储桶时,您正在使用自己的帐户,该帐户具有访问权限。
但是,好消息是好消息。您可以将您的服务帐户添加到域的所有者列表中,它将获得此权限。在网站站长中心,您可以添加和删除域名所有者。Google云端存储文档中提供了有关此内容的更多信息:https://developers.google.com/storage/docs/bucketnaming#verification