Google cloud storage Can';Google云存储中的gsutil不能对bucket名称使用通配符吗?

Google cloud storage Can';Google云存储中的gsutil不能对bucket名称使用通配符吗?,google-cloud-storage,gsutil,Google Cloud Storage,Gsutil,问题:可以使用gsutil在GCS bucketnames中使用通配符吗 我想在GCS中使用跨存储桶拆分的通配符获取多个文件。但是,在gsutil中使用bucket名称中的通配符时,我总是会遇到错误。我使用的通配符如下: gsutil ls gs://myBucket-abcd-*/log/data_* 我想匹配所有这些文件名(bucket name和object name的变体): 告诉我应该能够在bucketname和对象名中使用通配符,但是上面的代码示例总是得到“BadRequestEx

问题:可以使用gsutil在GCS bucketnames中使用通配符吗

我想在GCS中使用跨存储桶拆分的通配符获取多个文件。但是,在gsutil中使用bucket名称中的通配符时,我总是会遇到错误。我使用的通配符如下:

gsutil ls gs://myBucket-abcd-*/log/data_*
我想匹配所有这些文件名(bucket name和object name的变体):

告诉我应该能够在bucketname和对象名中使用通配符,但是上面的代码示例总是得到“BadRequestException:400无效参数”


当我不使用通配符或仅在对象名称中使用通配符时,gsutil将正常工作。但是在bucket名称中添加通配符会导致错误。是否有解决办法使通配符在bucket name中工作,或者我误解了链接的文档?

发现在这种情况下不能使用bucket通配符是按预期工作的,并且是由于权限设置的不同。Google云存储权限可以在bucket和项目级别设置

尽管在本例中使用的访问令牌可以访问每个单独的bucket,但它没有对顶级项目(在系统的许多用户之间共享)的读卡器/编辑器/所有者访问权。如果无法访问项目,则无法在存储桶上使用通配符

这可以通过让项目所有者将用户添加为项目的阅读器/编辑器/所有者来解决

在这种情况下,出于安全原因,我们不能为项目中的所有存储桶提供单独的令牌访问权限,但这有助于理解通配符为何不起作用。感谢大家的输入,特别是Travis的联系。

一些Shell(Zsh)正在尝试扩展*和**,因此您需要将这些包含在引号内。像这样

gsutil ls 'gs://myBucket-abcd-*/log/data_*'

我在这里找到了它

桶和对象上的通配符将起作用。我已经用我的项目对它进行了测试。您可以运行gsutil-DD标志来获取更多调试信息。这个问题似乎与对象或存储桶上设置的ACL有关。确保您有权查看这些对象或存储桶。通配符应该可以使用。如果“gsutil-DD ls your wildcard…”不能帮助您理解错误,请将gsutil-DD ls命令的输出通过电子邮件发送给gs-team@google.com我来看看。谢谢你帮我省了这么多时间。文档中确实应该有一个警告。事实证明,我的问题是由zsh试图扩展通配符引起的。万一有人遇到同样的问题;可能也有帮助。
gsutil ls 'gs://myBucket-abcd-*/log/data_*'