2

我有一个共享 VPC,其中有一个 cloudSQL 实例。在那个宿主项目中,我还有一个无服务器 vpc 连接器,ID 为 vpc-serverless-connector。它有 10.8.0.0/28 作为 ip 范围。我正在使用 firebase deploy 部署我的云功能,这是一个修补版本(请参阅https://github.com/firebase/firebase-functions/issues/552),我按照以下格式设置 VPCConnector:

vpcConnector:'projects/MY_HOST_PROJECT_ID/locations/MY_REGION/connectors/vpc-serverless-connector'

这些功能部署在同一区域 MY_REGION 的另一个项目中。该项目已获得对 sharedVPC 的访问权限。

当我部署时,我总是得到这个错误:

缺少项目 MY_PROJECT 上 serviceAccount:service-MY_SERVICEID@gcf-admin-robot.iam.gserviceaccount.com 的必要权限 vpcaccess.connector.use。

请授予 serviceAccount:service-MY_SERVICEID@gcf-admin-robot.iam.gserviceaccount.com 角色/查​​看者角色。

您可以通过运行“gcloud projects add-iam-policy-binding MY_PROJECT --member=serviceAccount:service-MY_SERVICEID@gcf-admin-robot.iam.gserviceaccount.com --role=roles/viewer”来做到这一点

我多次运行该命令,我检查以确保我的 firebase 相关项目中的 gcf-admin-robot iam serviceAccount 具有所有必要的角色。目前有:Viewer Serverless、VPC Access Admin Serverless、VPC Access User Serverless、VPC Access Viewer

那么发生了什么?我错过了什么?我似乎无法完成这项工作。我的目标是能够从另一个项目中的 firebase 云函数访问我的共享 vpc 的主机项目中的 cloudSQL 实例。

注意:我也尝试在没有 firebase 的情况下直接部署云功能并得到相同的错误。所以firebase不应该是这里的问题。

4

1 回答 1

3

我发现了这个问题。
我忘了从宿主项目的 IAM 中的服务项目添加 MY_SERVICEID@gcf-admin-robot.iam.gserviceaccount.com。
您需要将此电子邮件添加为具有 Cloud Functions 服务代理权限的宿主项目的成员。
不知何故,我错过了那部分。现在一切都按预期工作。

于 2020-08-03T02:27:42.073 回答