我的情况很简单。
我在项目a中有一个谷歌云函数,可以访问项目a中的PostgreSQL实例。它工作得很好。
现在我需要另一个来自项目B的Google Cloud函数来访问项目A中的PostgreSQL实例。
我一直在谷歌文档中盯着这个,我就是无法解析它:
如果授权服务帐户属于不同于云SQL实例的项目,请在这两个项目上启用云SQL管理API,并添加上面列出的IAM权限。
我知道我在项目B中的云功能的服务帐户需要具有IAM权限。(如果是,是否可以将云SQL权限仅限于项目A中的数据库?(
我是否正确理解我需要:
- 在项目a(SQL所在地(中创建具有相同IAM权限的服务帐户
- 是否将项目B的服务帐户作为本金添加到项目a的服务帐户
无需创建新的服务帐户,分析如下:Project A
必须允许访问project B
。由于云功能使用应用程序引擎默认服务帐户,您必须在运行数据库的项目(Project A
(中允许此帐户(来自project B
(。
因此:
关于项目B:
- 启用sql API,您可以单击此处执行
->
选择project B
- 启用云函数api
- 在IAM部分,复制应用程序引擎默认服务帐户的电子邮件:
<PROJECT_B_ID>@appspot.gserviceaccount.com
关于项目A(postgresql所在地(:
- 将
Cloud SQL Client
角色添加到project B
的应用程序引擎默认服务帐户(名称=应用程序引擎的默认服务帐户(,类似于此<PROJECT_B_ID>@appspot.gserviceaccount.com