使用Terraform通过共享VPC创建BASIC类型Filestore时出错
解决共享VPC创建Filestore实例的项目不匹配报错
问题场景
尝试从服务项目通过共享VPC创建BASIC类型Filestore实例,同一项目内使用VPC时仅需少量修改即可正常运行,但跨共享VPC时触发报错。原Terraform代码如下:
provider "google" { project = var.project region = var.region } resource "google_filestore_instance" "filestore_instance" { project = var.project name = var.name zone = var.zone tier = var.tier labels = var.labels file_shares { capacity_gb = var.capacity name = var.fileshare_name } networks { network = "projects/shared-vpc-host-project-id/global/networks/shared-vpc-network-name" modes = var.modes } }
报错信息
Error 400: network project mismatch with instance project with project_id and project_number
解决方案
确认共享VPC权限配置
- 确保服务项目已被共享VPC宿主项目添加为服务项目
- 确保执行Terraform的账号在服务项目拥有
roles/filestore.admin权限,同时在宿主项目拥有roles/compute.networkUser权限(用于访问共享VPC)
修正Filestore资源配置
在networks块中添加connect_mode = "PRIVATE_SERVICE_ACCESS",这是共享VPC场景下Filestore实例的必填配置,用于关联私有服务访问连接:
修正后的代码
provider "google" { project = var.project # 服务项目ID region = var.region } resource "google_filestore_instance" "filestore_instance" { project = var.project name = var.name zone = var.zone tier = var.tier labels = var.labels file_shares { capacity_gb = var.capacity name = var.fileshare_name } networks { network = "projects/shared-vpc-host-project-id/global/networks/shared-vpc-network-name" modes = var.modes # 添加共享VPC必填的连接模式 connect_mode = "PRIVATE_SERVICE_ACCESS" } }
- 额外检查项
- 确认
shared-vpc-host-project-id和shared-vpc-network-name替换为实际的宿主项目ID和共享VPC名称 - 确保私有服务访问连接已在宿主项目中创建并关联到共享VPC(如果尚未创建,需要先通过
google_compute_global_address和google_service_networking_connection资源配置)
- 确认
内容的提问来源于stack exchange,提问作者Hari Hara subramanian
相关产品推荐
相关产品推荐

