【发布时间】:2020-11-08 17:51:29
【问题描述】:
当我使用 terraform 创建网络 vpc 时,它显示错误“oauth2:无法获取令牌:意外 EOF”有人知道这是什么意思吗?
这是我的 terraform 代码:
provider "google" {
version = "3.5.0"
credentials = file("my_service_account_key_json_file")
project = "myproject"
region = "us-central1"
zone = "us-central1-c"
}
resource "google_compute_network" "vpc_network" { #line 9
name = "terraform-network"
}
terraform {
backend "gcs" {
bucket = "my_bucket"
prefix = "my_folder"
credentials = "my_service_account_key_json_file"
}
}
这是我在运行 terraform apply 时遇到的错误:
google_compute_network.vpc_network: Creating...
Error: Error creating Network: Post
https://www.googleapis.com/compute/v1/projects/<myproject>/global/networks?alt=json: oauth2:
cannot fetch token: unexpected EOF
on main.tf line 9, in resource "google_compute_network" "vpc_network":
9: resource "google_compute_network" "vpc_network" {
【问题讨论】:
-
在我的 GCP 项目中使用具有编辑角色的服务帐户,我能够在自己的帐户上运行此程序,没有任何问题。我使用与 Terraform v0.13.5 相同的 Google 提供程序版本(此时最新)
-
你使用的terraform版本是什么,可以尝试更新一下,同时检查相关API是否启用
-
验证您的服务帐户是否拥有正确的权限,并尝试刷新或重新创建您的 outh2 访问令牌。我强烈建议您阅读此document,了解使用 OAuth 2.0 授权请求
-
@Tanjin:是 Terraform v0.12.29,provider.google v3.5.0。我怀疑服务帐户密钥 json 文件有问题。但它是由 gcp 创建的。我只需单击“添加密钥”到我的服务帐户,选择 json 格式并下载它。我是否需要做任何其他事情,例如更改类似于 AWS 密钥对的 chmod?
-
@tanjin:我点击了你的链接,现在可以使用了。唯一的区别是在设置服务帐户权限时,我遵循的原始教程说我只需选择角色为编辑器,而您提供的链接说我需要设置几个管理员角色,如存储管理员,计算管理员等,我猜想Editor的作用是不够的。我是 GCP 的新手,所以不太清楚这意味着什么,但至少我现在可以运行 terraform。非常感谢。
标签: google-cloud-platform terraform-provider-gcp