我在GCP中有两个项目,比如项目A和B.项目A是新创建的,项目B是两年。当我在项目A中创建云功能时,它是使用默认服务帐户(project @ appspot ...)创建的。但是,当我在项目B上创建云功能时,会使用不存在的服务帐户。我知道它不存在,因为它没有出现在IAM上。
在项目A中,创建的云功能可以访问数据存储,但是,项目B中的相同云功能无法访问数据存储。
所以,我的问题是:
我如何知道云功能将使用哪个Google服务帐户?
有没有办法按项目B更改已使用的服务帐户,以获得访问数据存储区的云功能?
我试图为云功能提供适当的权限,但只要在项目B中它就不起作用。我在这里缺少什么?
答案 0 :(得分:2)
在项目B中,您需要检查两个不同的帐户。
首先是Google API服务帐户。您应该确保它存在并且它具有正确使用云功能的正确凭据。以下是GCP文档中的文档:
对于项目创建期间的管理操作, 更新或删除功能,Cloud Functions服务使用 Google API服务帐户 PROJECT_NUMBER@cloudservices.gserviceaccount.com。默认情况下,这个 服务帐户在项目中具有编辑角色。创建, 如果您减少此帐户,更新和删除功能可能会失败 权限。
接下来是运行时服务帐户。从您描述的问题来看,这可能是真正的问题。同样,这里有解释它的文档:
在运行时,云功能使用服务帐户 PROJECT_ID@appspot.gserviceaccount.com,具有编辑角色 该项目。您可以将此服务帐户的角色更改为限制 或者扩展正在运行的函数的权限。