Google cloud storage 为什么某些桶不应出现在gsutil ls之后?

Google cloud storage 为什么某些桶不应出现在gsutil ls之后?,google-cloud-storage,gsutil,Google Cloud Storage,Gsutil,当我执行gsutil ls-p myproject id时,我会得到一个bucket列表(在我的例子中是2个bucket),我希望它是项目中所有bucket的列表: gs://桶一/ gs://桶二/ 但是,如果我执行了gsutil ls-p myproject id gs://asixtythreecharacterlongnamebucket我实际上得到了长命名bucket的元素: gs://asixtythreecharacterlongnamebucket/somefolder/ 所以我

当我执行
gsutil ls-p myproject id
时,我会得到一个bucket列表(在我的例子中是2个bucket),我希望它是项目中所有bucket的列表:

gs://桶一/

gs://桶二/

但是,如果我执行了
gsutil ls-p myproject id gs://asixtythreecharacterlongnamebucket
我实际上得到了长命名bucket的元素:

gs://asixtythreecharacterlongnamebucket/somefolder/

所以我的问题是:为什么当我对这个项目做一个ls时,我并没有得到长名字的bucket的结果

对我来说唯一有意义的解释是:
但我不确定。这是原因吗?或者可能是其他请求?

您没有执行相同的请求

gsutil ls -p myproject-id
在这里,您可以询问属于项目的所有bucket资源


在这里,您询问属于bucket
asixtythreecharacterlongnamebucket的所有对象,并使用配额项目
myproject id



在这两种情况下,您都需要具有访问资源的权限

是否确定
asixtythreecharacterlongnamebucket
属于
myproject id
?这听起来像是在另一个项目中创建的

您可以通过检查
asixtythreecharacterlongnamebucket
bucket one
的bucket ACL来验证这一点,并查看列出的实体中的项目编号是否匹配:

$ gsutil ls -Lb gs://asixtythreecharacterlongnamebucket | grep projectNumber
$ gsutil ls -Lb gs://bucket-one | grep projectNumber

还请注意,当您在某些bucket中列出对象时,
ls
-p
参数在第二个命令中无效。
-p
参数仅影响在某些项目中列出存储桶时应使用的项目,就像在第一个命令中一样。将
ls
视为列出属于某个父级的子资源——bucket的父级是项目,而对象的父级是bucket。

我知道它们是不同的请求。我的疑问是,当我执行
gsutil ls-p myproject id
时,为什么bucket
asixtythreecharacterlongnamebucket
没有出现在列表中,即使我知道它属于该项目。啊。。您是否在这些bucket上定义了统一的细粒度权限?老实说,我不知道。我使用的是inherit帐户,这是我第一次使用谷歌云。但就你说的和我读到的,这是一个细粒度的权限问题。谢谢!对于
gsutil ls-Lb gs://asixtythreecharacterlongnamebucket | grep projectNumber
我无法执行此操作,因为
AccessDeniedException:403
。对于
gsutil ls-Lb gs://bucket one | grep projectNumber
,我能够得到一个数字。那么,我能否得出结论,它们属于不同的项目?是的,这基本上证实了这一点。如果您在拥有该bucket的项目上没有足够的角色(例如,项目所有者、存储管理员等),那么在尝试检索该bucket的元数据时,您将收到AccessDenied错误。
$ gsutil ls -Lb gs://asixtythreecharacterlongnamebucket | grep projectNumber
$ gsutil ls -Lb gs://bucket-one | grep projectNumber