从 gitlab 部署 Cloud Function 时出错

jar*_*max 5 service-accounts google-cloud-platform google-cloud-functions

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

\n

以下错误包括作为 cloud-functions-mixer 的用户。我没有在我的存储库中配置类似的内容,也不知道为什么会出现这种情况。

\n

首先,运行建议的命令甚至不起作用,因为建议的语法很糟糕。我尝试运行以下命令,但它 \xe2\x80\x99s 不正确

\n
\n

错误:googleapi:错误 403:缺少服务帐户 project-test-tf-02@appspot.gserviceaccount.com 上的 cloud-functions-mixer 的必要权限 iam.serviceAccounts.actAs。\n授予角色“roles/iam.serviceAccountUser”到服务帐户 project-test-tf-02@appspot.gserviceaccount.com 上的 cloud-functions-mixer。\n您可以通过运行“gcloud iam service-accounts add-iam-policy-binding project-test-tf-”来执行此操作02@appspot.gserviceaccount.com --member=cloud-functions-mixer --role=roles/iam.serviceAccountUser'。

\n
\n

Cra*_*nch 18

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

示例中将使用以下用户定义的服务帐户:

  • my-cloud-function@my-project.iam.gserviceaccount.com是您的函数运行的服务帐户。
  • build-service-account@my-project.iam.gserviceaccount.com是构建/部署您的云功能的服务帐户

运行的命令是:

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
Run Code Online (Sandbox Code Playgroud)

文档

或者,在 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}"
}
Run Code Online (Sandbox Code Playgroud)

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

此方法也适用于 Google Cloud Build。