我如何 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(只要调用者有正确的权限),它也可以工作。
列出存储桶或创建新存储桶时需要指定一个项目,因为所有存储桶都属于一个特定项目,但这是您唯一需要这样做的地方。
我有 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(只要调用者有正确的权限),它也可以工作。
列出存储桶或创建新存储桶时需要指定一个项目,因为所有存储桶都属于一个特定项目,但这是您唯一需要这样做的地方。