如何从python google云函数访问google云存储中的文件元数据

2024-06-09 05:28:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个云函数中访问Google云存储中文件的自定义元数据,但它总是返回“None”。在

  • 文件上肯定有自定义元数据-可以从GCS浏览器查看自定义元数据。

  • 如果我在云shell环境中运行代码,我可以成功地访问自定义元数据。

  • 但如果我在云函数中运行相同的代码,则返回blob.元数据总是“无”。

我做错什么了?与云Shell相比,我在云函数中有什么不同之处呢。在

from google.cloud import storage
client = storage.Client()
bucket = client.bucket(<my bucket name>)
blob = bucket.get_blob(<my filename>)
metadata = blob.metadata

还要注意blob.download_as_字符串()正确地获取了文件内容-这只是我无法获取的自定义元数据。在


Tags: 文件数据函数代码clientnonebucketmy
2条回答

事实上blob.元数据不会显示用户元数据,您必须添加斑点补丁()和元数据将出现在blob.元数据变量

from google.cloud import storage
client = storage.Client()
bucket = client.bucket(<my bucket name>)
blob = bucket.get_blob(<my filename>)
blob.patch()
metadata = blob.metadata

要保存用户元数据,可以设置blob.元数据然后打电话斑点补丁添加或修改元数据,或blob.更新删除此blob的用户元数据

blob.metadata只返回存储对象的custom metadata(dict)。None表示没有自定义元数据。参见the docs of ^{}

Retrieve arbitrary/application specific metadata for the object.

documentation of ^{} resource (API)指定{}是:

User-provided metadata, in key/value pairs.

请注意,自定义元数据与fixed-key metadata不同,您也可以使用Google云控制台中的edit metadata按钮进行编辑。固定密钥元数据包含:

  • 内容类型
  • 内容编码
  • 内容处置
  • 内容语言
  • 缓存控制

这种特定类型的元数据可以通过blob.content_typeblob.content_encoding。。。(勾选a complete example)。在

要添加自定义元数据,只需单击同一窗口上的添加项按钮(编辑元数据)或使用gsutil(请参见Editing object metadata docs):

gsutil setmeta -h "x-goog-meta-examplekey:examplevalue" gs://<your-bucket>

相关问题 更多 >