Google 云存储 - 如何通过 Python 检索文件的所有者?

Google Cloud Storage - How to retrieve a file's owner via Python?

我正在尝试通过 Python 官方客户端(google-cloud-storage)访问上传到 Google 云存储桶上的 blob。 我正在设法检索文件的所有者(上传文件的人),但我在互联网上找不到有用的东西。

我试过将客户端与类似的东西一起使用:

client(project='project').get_bucket('bucket').get_blob('blob')

但是像“owner”这样的 blob 属性是空的!

所以我尝试使用 Cloud Function 并访问事件和上下文。 在 Google 文档 (https://cloud.google.com/storage/docs/json_api/v1/objects#resource) 中报告了一个事件的结构,它似乎拥有所有者的权利。但是当我打印或尝试访问它时,我收到一个错误,因为它没有设置。

有人可以帮助我吗?我只需要有用户电子邮件...提前致谢!

编辑:

这似乎不是权限错误,因为我从 Google 站点测试 API 获得了正确的结果:https://cloud.google.com/storage/docs/json_api/v1/objects/get?apix_params=%7B%22bucket%22%3A%22w3-dp-prod-technical-accounts%22%2C%22object%22%3A%22datagovernance.pw%22%2C%22projection%22%3A%22full%22%7D

默认情况下,get_blob 不会获取所有者和 ACL。您将必须明确获取此信息:

blob = client(project='project').get_bucket('bucket').get_blob('blob')
blob.reload(projection='full')

请注意,如果您使用 uniform bucket-level ACLs,则所有者没有任何意义,即使进行了上述更改,所有者也将被取消设置。

编辑:这实际上不是最有效的选择,因为它对 GCS 进行了额外的不必要调用。最有效的选择是:

blob = Blob('bucket', 'blob')
blob.reload(projection='full', client=client)