我如何 create/access Python 中其他项目的 GCS 存储桶中的文件?

How can I create/access a file in an other project's GCS bucket in Python?

我有 2 个项目(A 和 B),我想通过 A 将文件写入 B 的存储空间。 我已授予对我要写入的 B 的存储桶上的 A 的写入权限。

我检查过https://cloud.google.com/storage/docs/json_api/v1/buckets/list

正如那里提到的那样,通过将项目编号传递给客户,我能够获得列表:

req = client.buckets().list(project=PROJECT_NUMBER)
res = req.execute()
...

到目前为止一切顺利。

当我检查 API 以列出给定的桶时,我卡住了。

https://cloud.google.com/storage/docs/json_api/v1/buckets/get

https://cloud.google.com/storage/docs/json_api/v1/objects/insert

这些 API 不需要项目编号,只需要存储桶名称。

如何确保将我的文件保存到项目 B 下的正确存储桶中?

我错过了什么?

提前感谢您的帮助!

Bucket名称是全局唯一的,因此您在处理特定Bucket时无需指定项目编号。如果bucket"bucketOfProjectB"属于project B,那么你只需要调用buckets().get(bucket="bucketOfProjectB").execute(),即使调用它的用户属于project A(只要调用者有正确的权限),它也可以工作。

列出存储桶或创建新存储桶时需要指定一个项目,因为所有存储桶都属于一个特定项目,但这是您唯一需要这样做的地方。