代码之家  ›  专栏  ›  技术社区  ›  Daniel Lenkes

如何在Python中创建/访问其他项目的GCS桶中的文件?

  •  1
  • Daniel Lenkes  · 技术社区  · 10 年前

    我有两个项目(A和B),我想用A将文件写入B的存储。 我已授予A对我要写入的B桶的写入权限。

    我查过了 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下的正确存储桶中?

    我想念什么?

    提前感谢您的帮助!

    1 回复  |  直到 10 年前
        1
  •  0
  •   Brandon Yarbrough    10 年前

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

    在列出bucket或创建新bucket时,指定一个项目是必要的,因为bucket都属于一个特定的项目,但这是您唯一需要做的地方。