You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform v1.5.4部署GCP网络apply报错:project字段未设置

Terraform Apply 报错:network字段未设置project的解决方法

问题现象

执行terraform apply时,google_compute_route和google_compute_router资源创建失败,报错如下:

module.vpc_module.google_compute_subnetwork.nl_subnet_private_subnet: Creation complete after 25s [id=projects/wms-prod-388716/regions/us-west1/subnetworks/nl-subnet-private-subnet]
module.vpc_module.google_compute_router.nl_subnet_private_router: Creating...
╷
│ Error: Invalid value for network: project: required field is not set
│
│   with module.vpc_module.google_compute_route.nl_subnet_private_egress_internet,
│   on ../../modules/vpc_module/vpc.tf line 19, in resource "google_compute_route" "nl_subnet_private_egress_internet":
│   19: resource "google_compute_route" "nl_subnet_private_egress_internet" {

│ Error: Invalid value for network: project: required field is not set
│
│   with module.vpc_module.google_compute_router.nl_subnet_private_router,
│   on ../../modules/vpc_module/vpc.tf line 25, in resource "google_compute_router" "nl_subnet_private_router":
│   25: resource "google_compute_router" "nl_subnet_private_router" {
│

但terraform plan和terraform validate检测结果正常,使用Terraform v1.5.4。

问题原因

当前代码中,google_compute_route和google_compute_router的network字段仅引用了VPC的名称(google_compute_network.nl_prod.name),而这两个资源在未显式指定project参数的情况下,仅传递名称无法让GCP API识别所属项目。子网资源虽同样使用名称,但因显式指定了project参数,所以能正常工作。

解决方案

将network字段的引用从VPC名称改为VPC的self_link或id属性,这两个属性包含完整的项目和网络标识信息,可让API正确识别资源归属。

修改后的代码示例:

修正后的google_compute_route资源

resource "google_compute_route" "nl_subnet_private_egress_internet" {
 name             = "prod-egress-internet"
 dest_range       = "0.0.0.0/0"
 network          = google_compute_network.nl_prod.self_link # 替换为self_link或id均可
 next_hop_gateway = "default-internet-gateway"
 priority         = 100
}

修正后的google_compute_router资源

resource "google_compute_router" "nl_subnet_private_router" {
  name    = "nl-subnet-private-router"
  region  = google_compute_subnetwork.nl_subnet_private_subnet.region
  network = google_compute_network.nl_prod.self_link # 替换为self_link或id均可
}

补充说明

也可以通过在google_compute_route和google_compute_router资源中显式添加project = var.project_id参数解决问题,但使用self_link或id更简洁,它们会自动继承VPC资源的项目信息,避免重复配置。

内容的提问来源于stack exchange,提问作者Devon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 16:55:10