首页 > 解决方案 > 如何从 python 谷歌云函数访问文件元数据,用于谷歌云存储中的文件

问题描述

我正在尝试从 Cloud Function 中访问 Google 云存储中文件上的自定义元数据,但它总是返回“None”。

我究竟做错了什么?与 Cloud Shell 相比,我必须在 Cloud Function 中做些什么不同的事情。

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_string() 可以正确获取文件内容 - 这只是我无法获取的自定义元数据。

标签: pythongoogle-cloud-functionsgoogle-cloud-storage

解决方案


blob.metadata只返回存储对象的自定义元数据(一个字典)。None表示没有自定义元数据。请参阅以下文档metadata

检索对象的任意/应用程序特定元数据。

资源(API)文档Object指定metadata为:

用户提供的元数据,键/值对。

请注意,自定义元数据与固定键元数据不同,您也可以使用Google Cloud Console 中的编辑元数据按钮进行编辑。固定键元数据包含:

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

这种特殊类型的元数据可以通过blob.content_type, blob.content_encoding, ... 访问(查看完整示例)。

要添加自定义元数据,只需单击同一窗口上的添加项目按钮(编辑元数据)或使用gsutil(请参阅编辑对象元数据文档):

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

推荐阅读