我创建了一个Google App Engine应用程序,监听Google Cloud Storage通知。每当在GCS上创建新对象时,该应用程序需要打开新对象并根据其内容执行操作。当应用程序和gcs存储桶位于不同的项目中时,我无法访问对象内容。
配置:
我在项目A中创建了一个具有“Storage Object Admin”权限的服务帐户,并将GAE应用程序与之关联。使用以下命令激活服务帐户:
gcloud auth activate-service-account [ACCOUNT] --key-file=KEY_FILE
然后,在与我的GAE应用程序相同的区域中,我在项目B中创建了一个名为gs://some_bucket的存储桶,并将我的服务帐户添加为存储桶的所有者。
我将我的服务帐户作为“Storage Object Admin”权限的成员添加到了项目B中。
我使用以下命令在我的应用程序和存储桶之间创建了一个watchbucket通道:
gsutil notification watchbucket -i [ChannelId] -t [Token] https://[app-name].appspot.com/ gs://some_bucket
现在,我的应用程序正在接收post请求,我可以解析它们,找到源存储桶、大小、对象名称等,但我无法读取对象本身。我得到了以下错误信息:
{Location: ""; Message: "Access Denied: File gs://some_bucket/some_object: Access Denied"; Reason: "accessDenied"}
我在同一项目(项目A)中测试了上述配置,并且能够读取对象并对其进行操作。这是一个我无法解决的权限问题。
gcloud auth activate-service-account [ACCOUNT] --key-file=KEY_FILE
然后,在与我的GAE应用程序相同的区域中,我在项目B中创建了一个名为gs://some_bucket的存储桶,并将我的服务帐户添加为存储桶的所有者。
我将我的服务帐户作为“Storage Object Admin”权限的成员添加到了项目B中。
我使用以下命令在我的应用程序和存储桶之间创建了一个watchbucket通道:
gsutil notification watchbucket -i [ChannelId] -t [Token] https://[app-name].appspot.com/ gs://some_bucket
现在,我的应用程序正在接收post请求,我可以解析它们,找到源存储桶、大小、对象名称等,但我无法读取对象本身。我得到了以下错误信息:
{Location: ""; Message: "Access Denied: File gs://some_bucket/some_object: Access Denied"; Reason: "accessDenied"}
我在同一项目(项目A)中测试了上述配置,并且能够读取对象并对其进行操作。这是一个我无法解决的权限问题。