gpt4 book ai didi

google-app-engine - 从两个不同的谷歌云项目访问谷歌云存储中的文件

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:51 25 4
gpt4 key购买 nike

考虑以下情况:

  • 我有两个 AppEngine 项目:A 和 B
  • 我有一个具有以下 ACL 的 Cloud Storage 存储桶:

    <?xml version="1.0" ?>
    <AccessControlList>
    <Owner>
    <ID>id-of-the-user-who-created-the-bucket</ID>
    </Owner>
    <Entries>
    <Entry>
    <Scope type="UserByEmail">
    <EmailAddress>app-A-service-account-name</EmailAddress>
    </Scope>
    <Permission>FULL_CONTROL</Permission>
    </Entry>
    <Entry>
    <Scope type="UserByEmail">
    <EmailAddress>app-B-service-account-name</EmailAddress>
    </Scope>
    <Permission>FULL_CONTROL</Permission>
    </Entry>
    </Entries>
    </AccessControlList>
  • 我的 GAE 应用程序是用 Python 编写的,它们使用 GCS Client Library

现在,这是我想要实现的:我希望应用程序 A 在存储桶中创建文件,然后应用程序 B 读取它们。

起初我尝试使用 cloudstorage.open(file_name, 'w') 简单地创建一个文件,然后使用 cloudstorage.stat(file_name, 'r')< 读取它的状态,但是这样我在阅读时遇到了以下错误:

ForbiddenError at /.../
Expect status [200] from Google Storage. But got status 403.

(错误消息还提供请求/响应信息:路径、 header 、正文和额外信息。如果您认为它们可能有助于解决此问题,请告诉我)

然后我开始通过设置 x-googl-acl 来试验 ACL创建文件时的选项,例如:

cloudstorage.open(file_name, 'w', options={'x-goog-acl': 'authenticated-read'})

尽管 ACL 按预期工作,但似乎没有可用选项符合我的要求:

  • private - 只有桶拥有者有访问权限,B 不能读取
  • public-read - 匿名用户可以访问文件, Not Acceptable
  • public-read-write - 同上
  • authenticated-read - 每个拥有经过身份验证的帐户的人都可以阅读(即使是不属于该项目的人),所以它与之前的选项没有什么不同
  • bucket-owner-read - 看起来很完美,但事实证明“bucket owner”不是通过 Cloud Console 设置为“owner”的用户,而是创建的用户水桶
  • bucket-owner-full-control - 同上

看起来我已经没有选择了,但我无法相信云存储无法实现如此简单的事情。我想到的唯一解决方案是改变系统的架构,但我想避免它。还有其他建议吗?

最佳答案

将访问者服务帐户(例如 app1@appspot.gserviceaccount.com 或 1234567890-compute@developer.gserviceaccount.com 用于计算引擎)添加为对项目具有要使用的 GCS 存储桶的“编辑”权限的成员。这可以在拥有存储桶的项目的 IAM 页面中完成: https://console.developers.google.com/iam-admin/iam/project?project=app1

关于google-app-engine - 从两个不同的谷歌云项目访问谷歌云存储中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24738811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com