gcloud app 部署错误 需要“vpcaccess.connectors.use”权限

问题描述 投票:0回答:3

我有 GO 应用程序,并尝试使用 google 命令行 sdk 从具有自定义服务帐户的本地计算机将其部署到 google 应用程序引擎。

我创建一个具有角色的自定义服务帐户:

  • 应用程序引擎管理员
  • 云构建服务帐号
  • 云构建服务
  • 代理无服务器 VPC 访问用户

并用此账户进行本地授权:

gcloud auth activate-service-account [email protected] --key-file=key.json

此外,我在 app.yaml 中配置服务帐户:

service_account: [email protected]

但是当我尝试部署时

gcloud app deploy -v 1   

我收到错误:

Beginning deployment of service [default]...
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 0 files to Google Cloud Storage                ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
ERROR: (gcloud.app.deploy) PERMISSION_DENIED: Operation is not allowed. The "vpcaccess.connectors.use" permission is required.

我不明白为什么即使我拥有 Serverless VPC Access User 角色,仍然需要 vpcaccess.connectors.use 权限?我在这个谷歌文档页面

上找到了这个角色

也许有人遇到过类似的困难?请帮助我)

UPD 即使我给予所有者角色我钢也有错误

google-app-engine google-cloud-platform permissions permission-denied
3个回答
12
投票

修复此错误的一种方法是从 app.yaml 中删除

vpc_access_connector:
配置,但这意味着您的应用程序引擎需要通过互联网连接才能访问子网上的资源。

如果您确实需要配置 vpc_access_connector,请添加

Serverless VPC Access User
Compute Viewer
执行部署的服务账户的 IAM 角色。将角色添加到配置了 VPC 访问连接器的项目中。

当连接器不存在(或存在于其他地方)时也会出现此错误。

检查 app.yaml 中的项目 ID、区域和连接器名称是否正确,并引用存在于中的连接器 https://console.cloud.google.com/networking/connectors/list?project=

vpc_access_connector:
  name: projects/project-id/locations/the-zone/connectors/my-connector-name

如果您有共享 VPC,无服务器访问连接器可以位于宿主项目或服务项目中。请参阅:在共享 VPC 服务项目中配置连接器

如果连接器位于共享 VPC 的宿主项目上,您必须在宿主项目上授予部署服务帐户

Serverless VPC Access Viewer
(vpcaccess.viewer) 角色。 还建议在主机上使用
Compute Network Viewer
(compute.networkViewer)。


3
投票

好吧,我通过从 app.yaml 中删除 vpc_access_connector: 配置来修复此错误

UPD 但如果需要配置 vpc_access_connector 则需要添加 无服务器 VPC 访问用户和计算查看者 IAM 角色,所有这些都必须正常工作。


0
投票

对于那些部署第二代云功能时面临此问题的人,请确保正确的帐户被授予必要的角色。

您会关心两个项目编号:

HOST_PROJECT_NUMBER
SERVICE_PROJECT_NUMBER

  1. 确保服务帐户
    service-SERVICE_PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
    具有 Serverless VPC 访问服务代理 角色。
  2. 添加一个名为 Cloud Run Service Agent 的新主体,其形式为
    service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
  3. 将 vpcaccess.user、cloudfunctions.serviceAgent、compute.viewer 角色分配给此 Cloud Run Service Agent
    service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
  4. 添加一个名为 Cloud Function Service Agent 的新主体,其格式为
    service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
    ,其中 SERVICE_PROJECT_NUMBER 是需要在 host 项目中授予角色的服务项目编号
  5. 无服务器 VPC 访问用户计算网络用户角色授予云函数服务代理
    service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com

参考:https://cloud.google.com/knowledge/kb/第二代-cloud-functions-deployment-fails-000005033

© www.soinside.com 2019 - 2024. All rights reserved.