Terraform部署GCE默认服务帐户错误

问题描述 投票:0回答:1

当尝试通过 terraform 部署项目时,我遇到以下问题:

Error: Error when reading or editing GCE default service account: googleapi: Error 401: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
│ Details:
│ [
│   {
│     "@type": "type.googleapis.com/google.rpc.ErrorInfo",
│     "metadatas": {
│       "method": "compute.v1.ProjectsService.Get",
│       "service": "compute.googleapis.com"
│     },
│     "reason": "ACCESS_TOKEN_TYPE_UNSUPPORTED"
│   }
│ ]
│
│ More details:
│ Reason: authError, Message: Invalid Credentials
│
│
│   with data.google_compute_default_service_account.default,
│   on iam.tf line 7, in data "google_compute_default_service_account" "default":
│    7: data "google_compute_default_service_account" "default" {

我检查了默认的 GCE 帐户,最初它缺少密钥,所以我创建了它,但没有成功。当我尝试向帐户添加权限时会出现此问题。

在 iam.tf 文件中,我将帐户定义为:

data "google_compute_default_service_account" "default" {
  project = var.project_id
}

有没有办法可以使用预设帐户更改 terraform iam 文件中的默认服务帐户?或者我可以尝试其他解决方案吗?

google-cloud-platform terraform google-compute-engine
1个回答
0
投票

您遇到的错误消息是由于 terraform 尝试使用无效或不受支持的身份验证访问 Google 云服务。

要解决您的问题,请为云外壳设置 OAuth 令牌,或者您需要使用明确的服务帐户密钥:

根据此 Hashicorp 文档

如果您使用的是 Cloud shell,请首先使用 GCP 进行身份验证。最简单的方法是运行 gcloud auth application-default login(如果您已经安装了 gcloud)。如果您还没有,可以从这里安装。

您可以将 Google Cloud 服务帐户与 terraform 结合使用。从 Cloud Console 的服务帐号密钥页面中选择一个现有帐号,或创建一个新帐号。接下来,下载 JSON 密钥文件。将其命名为您能记住的名称,并将其存储在计算机上安全的位置。

注意:目前唯一支持的服务帐号凭据是从 Cloud Console 下载的凭据或由 gcloud 生成的凭据。

您可以使用环境变量 GOOGLE_APPLICATION_CREDENTIALS 向 Terraform 提供密钥,并将值设置为文件的位置。导出 GOOGLE_APPLICATION_CREDENTIALS={{路径}}

这有助于使用服务帐户进行身份验证。而不是默认的 GCE 服务帐户。

© www.soinside.com 2019 - 2024. All rights reserved.