为什么某些存储桶不应出现在 gsutil ls 之后?

Why some buckets should not appear after a gsutil ls?

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

gs://bucket-one/

gs://bucket-two/

但是,如果我这样做 gsutil ls -p myproject-id gs://asixtythreecharacterlongnamebucket 我实际上得到了那个长名称桶的元素:

gs://asixtythreecharacterlongnamebucket/somefolder/

所以我的问题是:为什么当我对项目执行 ls 时,我没有在结果中得到长名称的存储桶?

对我来说唯一有意义的解释是: 但我不确定。是这个原因吗?还是其他的?

您没有执行相同的请求!

gsutil ls -p myproject-id

这里问的是属于一个项目的所有bucket资源


gsutil ls -p myproject-id gs://asixtythreecharacterlongnamebucket

这里你问所有属于bucketasixtythreecharacterlongnamebucket的对象,你用的是quota项目myproject-id


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

确定 asixtythreecharacterlongnamebucket 属于 myproject-id 吗?听起来确实 asixtythreecharacterlongnamebucket 是在不同的项目中创建的。

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

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

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