Google cloud platform 列出与gsutil匹配的存储桶标签
我有我的谷歌云存储桶标签Google cloud platform 列出与gsutil匹配的存储桶标签,google-cloud-platform,gsutil,Google Cloud Platform,Gsutil,我有我的谷歌云存储桶标签 我在文档中找不到任何关于如何执行gsutil ls的内容,但只过滤带有特定标签的存储桶-这可能吗?现在,不可能一步完成您想要的操作。您可以通过3个步骤完成此操作: 获取GCP项目的所有数据 获取每个桶的标签 对每个达到标准的桶执行gsutil ls 这是我为您编写的python 3代码 导入子流程 out=子流程.getoutput(“gsutil ls”) 对于行输入输出分割('\n'): label=subprocess.getoutput(“gsutil labe
我在文档中找不到任何关于如何执行
gsutil ls
的内容,但只过滤带有特定标签的存储桶-这可能吗?现在,不可能一步完成您想要的操作。您可以通过3个步骤完成此操作:
gsutil ls
导入子流程
out=子流程.getoutput(“gsutil ls”)
对于行输入输出分割('\n'):
label=subprocess.getoutput(“gsutil label get”+行)
如果str(标签)中有“您的标签”:
gsout=subprocess.getoutput(“gsutil ls”+行)
打印(“文件在“+行+”:\n”)
打印(gsout)
Abash
唯一的解决方案:
function get_labeled_bucket {
# list all of the buckets for the current project
for b in $(gsutil ls); do
# find the one with your label
if gsutil label get "${b}" | grep -q '"key": "value"'; then
# and return its name
echo "${b}"
fi
done
}
“键”:“值”部分只是一个字符串,替换为键和值。使用LABELED\u BUCKET=$(get\u LABELED\u BUCKET)
在我看来,让一个bash函数返回多个值是一件麻烦事。如果您需要使用多个bucket,那么我将用需要运行的代码替换echo
from google.cloud import storage
client = storage.Client()
for blob in client.list_blobs('bucketname', prefix='xjc/folder'):
print(str(blob))
刚刚有一个用例,我想列出所有带有特定标签的桶。对我来说,使用subprocess的公认答案显然很慢。以下是我使用Python客户端库进行云存储的解决方案:
from google.cloud import storage
def list_buckets_by_label(label_key, label_value):
# List out buckets in your default project
client = storage.Client()
buckets = client.list_buckets() # Iterator
# Only return buckets where the label key/value match inputs
output = list()
for bucket in buckets:
if bucket.labels.get(label_key) == label_value:
output.append(bucket.name)
return output