【发布时间】:2021-10-05 14:13:26
【问题描述】:
我目前正在尝试将开发项目复制到生产项目中。所有代码和文件都已传输,但 Cloud Run 功能尚未构建。
我将提供有关这两个项目架构的更多信息,以防万一。在开发项目中,我们有一个暂存分支。推送到此分支的任何更改都会触发 Cloud Build 触发器,这些触发器会对传入的更改进行完整性检查并部署更新的代码。然后我们可以将这些更改与主分支合并并推送,这会触发额外的 Cloud Build 触发器以将代码从开发项目复制到生产项目。
错误是:
ERROR: (gcloud.run.deploy) User [project-number@cloudbuild.gserviceaccount.com] does not have permission to access namespaces instance [Project ID] (or it may not exist): Permission 'iam.serviceaccounts.actAs' denied on service account cloud-run-pubsub-invoker@project-id.iam.gserviceaccount.com (or it may not exist).
project-number@cloudbuild.gserviceaccount.com 具有以下权限:App Engine 管理员、BigQuery 作业用户、Cloud Build 服务帐户、Cloud Functions 管理员、Cloud Functions 开发人员、Cloud Scheduler 管理员、Editor 服务帐户、Token Creator 服务帐户用户、Pub/Sub编辑、Cloud Run 管理员、Secret Manager Secret Accessor、存储对象管理员
我找到了link 来解决另一个问题,该问题具有相同的问题。接受的解决方案是添加以下服务帐户和角色
Email: service-<account-id>@serverless-robot-prod.iam.gserviceaccount.com
Role: Google Cloud Run Service Agent
到 IAM 帐户。我试过了,得到了这个消息:No change: member already exists on the policy.错误可能在其他地方。
我还注意到帐户电子邮件cloud-run-pubsub-invoker@project-id.iam.gserviceaccount.com 出现在开发项目中,但不是生产项目。我认为这可能是问题的根源,但是当我尝试通过 IAM 页面添加此帐户(将项目 ID 更改为新项目的 ID)时,错误状态:Email addresses and domains must be associated with an active Google Account, Google Workspace account, or Cloud Identity account.
我不知道如何解决这个问题,感谢任何帮助。谢谢!
【问题讨论】:
-
您能否提供更多关于您运行部署的项目、目标项目以及您可以拥有的其他跨项目信息的详细信息?有一些跨项目配置需要修复,我们需要更多细节。
-
我在第二段中添加了更多细节。添加的信息是否可以理解?如有必要,我可以尝试再次解释。
标签: google-cloud-run google-cloud-build google-iam