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个步骤完成此操作:

  • 获取GCP项目的所有数据
  • 获取每个桶的标签
  • 对每个达到标准的桶执行
    gsutil ls
  • 这是我为您编写的python 3代码

    导入子流程
    out=子流程.getoutput(“gsutil ls”)
    对于行输入输出分割('\n'):
    label=subprocess.getoutput(“gsutil label get”+行)
    如果str(标签)中有“您的标签”:
    gsout=subprocess.getoutput(“gsutil ls”+行)
    打印(“文件在“+行+”:\n”)
    打印(gsout)
    
    A
    bash
    唯一的解决方案:

    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