执行带有Google Provider的 "terraform apply" 时出现error(oauth2: cannot fetch token)?

布置好main.tf, 执行terraform init,terraform plan都顺利,执行terraform apply后,出现下面的错误:

google_storage_bucket.demo-bucket: Creating...
google_storage_bucket.demo-bucket: Still creating... [10s elapsed]
google_storage_bucket.demo-bucket: Still creating... [20s elapsed]
google_storage_bucket.demo-bucket: Still creating... [30s elapsed]
╷
│ Error: Post "https://storage.googleapis.com/storage/v1/b?alt=json&prettyPrint=false&project=coherent-ascent-379901": oauth2: cannot fetch token: Post "https://oauth2.googleapis.com/token": dial tcp 172.217.163.42:443: i/o timeout

我做了以下尝试,但是这些操作以后,错误仍然存在
1、gcloud auth list 命令来查看当前的身份验证状态,显示我的服务账号与用户账号都活跃
2、使用 gcloud components update 命令来更新 SDK,显示最新版本
3、运行 gcloud auth application-default print-access-token 命令并成功获取访问令牌
4、尝试运行 gcloud auth application-default login 命令重新进行授权

main.tf脚本:

terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "5.13.0"
    }
  }
}

provider "google" {
  credentials = "./keys/my-creds.json" # Credentials only needs to be set if you do not have the GOOGLE_APPLICATION_CREDENTIALS set
  project     = "coherent-ascent-379901"
  region      = "us-central1"
}



resource "google_storage_bucket" "demo-bucket" {
  name          = "coherent-ascent-379901-terra-bucket"
  location      = "US"
  force_destroy = true

  lifecycle_rule {
    condition {
      age = 2 //days
    }
    action {
      type = "AbortIncompleteMultipartUpload"
    }
  }
}

有大佬遇到过这种问题吗?

阅读 458
avatarAI BotBETA

你遇到的问题是Terraform在尝试与Google Cloud进行交互时,无法获取OAuth2令牌。这个错误通常表示Terraform无法从Google Cloud身份验证中获取有效的访问令牌。

根据你提供的尝试,你已经验证了服务账号和用户账号都是活跃的,也更新了SDK,获取了访问令牌,并尝试重新进行授权。然而,问题仍然存在。

这可能是由于以下原因:

  1. 网络问题:Terraform在尝试与Google Cloud的API进行通信时可能遇到了网络问题。这可能是由于你的网络环境或Terraform配置中的代理设置问题。
  2. Google Cloud身份验证问题:尽管你已经通过gcloud命令验证了你的身份验证状态,但Terraform可能无法访问这些凭据。确保你的.terraformrccredentials.tfrc.json文件正确配置,并且包含有效的凭据。
  3. Terraform配置问题:检查你的Terraform配置文件,确保所有的配置都是正确的。特别是provider块和required_providers块。
  4. Terraform版本问题:虽然你正在使用最新版本的gcloud SDK,但是Terraform的版本可能与Google Cloud的身份验证服务不兼容。尝试更新Terraform到最新版本。
  5. OAuth2令牌过期:尽管你已经获取了访问令牌,但这个令牌可能已经过期。你可以尝试重新获取令牌并更新Terraform的配置。

你可以尝试以下操作来解决这个问题:

  • 检查你的网络连接和代理设置,确保Terraform可以正常访问Google Cloud的API。
  • 确保你的Terraform配置文件(.terraformrccredentials.tfrc.json)正确配置并包含有效的凭据。
  • 更新Terraform到最新版本。
  • 如果可能,尝试重新获取OAuth2令牌并更新Terraform的配置。

如果以上建议都无法解决问题,你可能需要联系Google Cloud的支持团队以获取更多帮助。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏