如何解决谷歌云 - 删除存储桶元数据
试图删除谷歌云存储桶中对象的元数据。
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 举报,一经查实,本站将立刻删除。