从 gitlab 部署 Cloud Function 时出错

Error Deploying Cloud Function from gitlab

我正在尝试使用新服务帐户(不使用默认服务帐户)通过 gitlab 部署云功能。它具有云功能开发人员角色,但仍然失败并出现以下错误:

下面的错误包括一个用户作为 cloud-functions-mixer。我没有在我的回购协议中配置任何类似的东西,也不确定为什么会出现。

首先,运行 建议的命令甚至不起作用,因为建议的语法很糟糕。我试过 运行 下面的命令但是不对

Error: googleapi: Error 403: Missing necessary permission iam.serviceAccounts.actAs for cloud-functions-mixer on the service account project-test-tf-02@appspot.gserviceaccount.com. Grant the role 'roles/iam.serviceAccountUser' to cloud-functions-mixer on the service account project-test-tf-02@appspot.gserviceaccount.com. You can do that by running 'gcloud iam service-accounts add-iam-policy-binding project-test-tf-02@appspot.gserviceaccount.com --member=cloud-functions-mixer --role=roles/iam.serviceAccountUser'.

Google 关于 cloud-functions-mixer 的说明是 错误的 。您实际需要做的是将字符串 cloud-functions-mixer 替换为正在 构建或部署 您的函数的服务帐户的名称。

示例中将使用以下 user-defined 个服务帐户:

  • my-cloud-function@my-project.iam.gserviceaccount.com 是您的函数 运行 作为的服务帐户。
  • build-service-account@my-project.iam.gserviceaccount.com 是 builds/deploys 您的 Cloud Function
  • 的服务帐户

运行的命令是:

gcloud iam service-accounts add-iam-policy-binding my-cloud-function@my-project.iam.gserviceaccount.com --member=serviceAccount:build-service-account@my-project.iam.gserviceaccount.com --role=roles/iam.serviceAccountUser

或者,在 Terraform 中,您需要这样的资源:

resource "google_service_account_iam_member" "opentok_webhook_mixer" {
  service_account_id = google_service_account.my_cloud_function.id
  role               = "roles/iam.serviceAccountUser"
  member             = "serviceAccount:${google_service_account.build_service_account.email}"
}

您必须更新服务帐户资源的名称。

此方法也适用于 Google Cloud Build。