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
时,为什么bucketasixtythreecharacterlongnamebucket
没有出现在列表中,即使我知道它属于该项目。啊。。您是否在这些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