Cloud Run:连接到另一个 GCP 项目上的 CloudSQL 数据库

Gus*_*ima 2 permissions google-cloud-sql google-cloud-platform google-cloud-run

我在将 [项目 A] Cloud Run 实例连接到 [项目 B] Cloud SQL 实例时遇到问题。

我已经按照本文所述设置了服务帐户权限:https://cloud.google.com/sql/docs/mysql/connect-run

哪些是这样的:

  • 我在 [项目 B] 上创建了一个具有 Cloud SQL 管理员和 Cloud SQL 客户端权限的服务帐号。
  • 我在 [项目 A] 上为 Cloud Run 实例创建了一个服务帐户,此帐户在 [项目 B] 的服务帐户上具有用户角色

这两个项目都启用了 Cloud SQL Admin API,如果我在 [项目 B] 上构建相同的 Cloud Run 实例,它的连接不会出现任何问题,所以我想这是一个权限问题。

我从 [Project A] Cloud Run 的日志中收到的错误是:googleapi: Error 403: The client is notauthorized to make this request., notAuthorized

小智 5

我复制了您的错误并设法修复它,而无需Service Account项目 A (Cloud Run)项目 B(Cloud SQL)上手动创建。

当您在 中部署服务Cloud Run时,它会使用默认的 Compute Engine 服务帐户,如下所示:project-number-compute@developer.gserviceaccount.com

然后,我打开Cloud SQL所在项目 B上的Cloud IAM页面,然后向项目 A(云运行)中的服务帐户角色授予或权限。Cloud SQL ClientCloud SQL Admin

项目 B Cloud IAM 页面的示例屏幕截图,我从以下位置授予了project-number-compute@developer.gserviceaccount.com服务帐户Cloud Run在此输入图像描述

您还可以在修订选项卡 -> 安全选项卡中查看您的云运行使用的服务帐户

在此输入图像描述