我有 GO 应用程序,并尝试使用 google 命令行 sdk 从具有自定义服务帐户的本地计算机将其部署到 google 应用程序引擎。
我创建一个具有角色的自定义服务帐户:
并用此账户进行本地授权:
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 即使我给予所有者角色我钢也有错误
修复此错误的一种方法是从 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)。
好吧,我通过从 app.yaml 中删除 vpc_access_connector: 配置来修复此错误
UPD 但如果需要配置 vpc_access_connector 则需要添加 无服务器 VPC 访问用户和计算查看者 IAM 角色,所有这些都必须正常工作。
对于那些部署第二代云功能时面临此问题的人,请确保正确的帐户被授予必要的角色。
您会关心两个项目编号:
HOST_PROJECT_NUMBER
和 SERVICE_PROJECT_NUMBER
。
service-SERVICE_PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
具有 Serverless VPC 访问服务代理 角色。service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
,其中 SERVICE_PROJECT_NUMBER 是需要在 host 项目中授予角色的服务项目编号service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
参考:https://cloud.google.com/knowledge/kb/第二代-cloud-functions-deployment-fails-000005033