微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

谷歌云 - 删除存储桶元数据

如何解决谷歌云 - 删除存储桶元数据

试图删除谷歌云存储桶中对象的元数据。

the docs only so an example when using the json api,in which is say to send Metadata-key:null.

我在下面使用 python 尝试过这个,但所有这些都是用“null”替换元数据数据作为字符串而不是删除它。

你实际上如何使用 api/gsutil 删除元数据

我也尝试过 gsutil setMeta,它很容易编辑元数据,但我似乎无法删除它..

https://cloud.google.com/storage/docs/viewing-editing-metadata

导入操作系统

from google.cloud import storage

    bucket_name = "bucket-name"
    blob_name = "blobname"
    
    
    
    
    def set_blob_Metadata(bucket_name,blob_name):
    
        storage_client = storage.Client()
        bucket = storage_client.bucket(bucket_name)
        blob = bucket.get_blob(blob_name)
        Metadata = {'x-goog-meta-key':"null"}
        blob.Metadata = Metadata
        blob.patch()
    
        print("The Metadata for the blob {} is {}".format(blob.name,blob.Metadata))


set_blob_Metadata(bucket_name,blob_name)

解决方法

为了使用 gsutil setmeta 命令删除自定义元数据,您只需为相关键提供一个空值。例如。如果您有自定义元数据名称 key,其值为 foo,则运行以下命令应删除自定义元数据:

gsutil setmeta -h "x-goog-meta-key:" gs://[YOUR-BUCKET]/[YOUR-OBJECT]

考虑到我在上面分享的链接中的建议:

自定义元数据在 gsutil 中始终以 x-goog-meta- 为前缀。这将它与标准请求标头区分开来。其他使用请求正文发送和接收对象元数据的工具不使用此前缀。

此外,您可以通过点击 Cloud Console 上“编辑元数据”选项的垃圾桶符号来轻松删除元数据。

编辑

以下脚本应使用 Python 客户端库删除元数据:

from google.cloud import storage

bucket_name = "[YOUR-BUCKET-NAME]"
blob_name = "[YOUR-OBJECT-NAME]"
key = "[YOUR-CUSTOM-METADATA-KEY-NAME]" #e.g. if you have a Custom Metadata named "key" with a value "foo" just enter key

def remove_blob_metadata(bucket_name,blob_name,key):

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.get_blob(blob_name)

    if blob.metadata != None:
        if key not in blob.metadata.keys():
            print("Couldn't find that key under the Custom Metadata field for object {} in bucket {}".format(blob_name,bucket_name))
        else:
            d = blob.metadata
            blob.metadata = None
            blob.patch()
            del d[key]
            blob.metadata = d
            blob.patch()
            print("Removed \"{}\" key from Custom Metadata field for object {} in bucket {}".format(key,bucket_name))
    else:
        print("Object {} in bucket {} doesn't have Custom Metadata".format(blob_name,bucket_name))

remove_blob_metadata(bucket_name,key)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。