我travisci-deployer@PROJECT_ID.iam.gserviceaccount.com在项目上创建了一个自定义服务帐户,并为其授予了Cloud Run Admin角色:
gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
--member="serviceAccount:${SERVICE_ACCOUNT_EMAIL}" \
--role="roles/run.admin"
Run Code Online (Sandbox Code Playgroud)
然后,将此服务帐户设置为我的gcloud命令的身份:
gcloud auth activate-service-account --key-file=google-key.json
Run Code Online (Sandbox Code Playgroud)
但是,当我运行gcloud beta run deploy命令时,出现有关“ Compute Engine默认服务帐户”没有iam.serviceAccounts.actAs权限的错误:
gcloud beta run deploy -q "${SERVICE_NAME}" \
--image="${CONTAINER_IMAGE}" \
--allow-unauthenticated
Run Code Online (Sandbox Code Playgroud)
Deploying container to Cloud Run service [$APP_NAME] in project [$PROJECT_ID] region [us-central1]
Deploying...
Deployment failed
ERROR: (gcloud.beta.run.deploy) PERMISSION_DENIED: Permission 'iam.serviceaccounts.actAs'
denied on service account 1075231960084-compute@developer.gserviceaccount.com
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很奇怪(因为我没有使用GCE默认服务帐户标识,尽管在应用部署后Cloud Run应用会使用它)。
因此,该1075231960084-compute@developer.gserviceaccount.com帐户用于API调用,而不是travisci-deployer@PROJECT_ID.iam.gserviceacount在上配置我的服务帐户gcloud?
我该如何解决?
将Cloud Run Admin和Service Account User角色添加到我自己的服务帐户为我解决了这个问题。请参阅此处文档中的第 2 步:https : //cloud.google.com/run/docs/continuous-deployment#continuous
如果我们详细阅读了有关Cloud Run的IAM参考页面的文档(位于此处),则会找到以下文本:
用户需要以下权限才能部署新的Cloud Run服务或修订:
run.services.create而run.services.update该项目的级别。通常通过roles/run.admin角色分配。可以在项目权限管理页面中进行更改。iam.serviceAccounts.actAsCloud Run运行时服务帐户。默认情况下是PROJECT_NUMBER-compute@developer.gserviceaccount.com。该权限通常是通过roles/iam.serviceAccountUser角色分配的。
我认为这些额外的步骤可以按照您的说明解释故事。
| 归档时间: |
|
| 查看次数: |
707 次 |
| 最近记录: |