Terraform创建Cloud Run域名映射遇403权限错误及权限缺失问题
问题分析与解决
核心问题排查
首先明确:Cloud Run域名映射目前已处于GA(正式可用)阶段,并非预览功能,所以权限选项找不到和预览阶段无关。
1. 权限配置逻辑错误:用预定义角色替代单独权限
GCP中大部分细粒度权限无法直接单独添加到服务账号,必须通过预定义角色或自定义角色实现权限分配。run.domainmappings.create权限包含在以下两个预定义角色中:
- Cloud Run Admin (
roles/run.admin):拥有Cloud Run全量资源的管理权限 - Cloud Run Domain Mapping Editor (
roles/run.domainMappingEditor):仅针对域名映射的编辑权限
直接给服务账号赋予上述角色即可,无需单独寻找run.domainmappings.create权限选项。
2. Terraform配置的关键错误
你的配置中metadata.namespace字段填写的是var.gcp_service_name,这是错误的:
Cloud Run资源的
metadata.namespace必须填写GCP项目ID,而非服务名称。
错误的namespace会导致Terraform尝试访问不存在的资源路径,进而触发403或资源不存在类报错。修正后的配置示例:
resource "google_cloud_run_domain_mapping" "this" { location = var.gcp_location name = var.gcp_service_domain metadata { namespace = var.gcp_project_id # 替换为你的项目ID变量 } spec { route_name = google_cloud_run_v2_service.this.name } }
3. 额外排查点
- 确认服务账号的权限是在项目层级或对应区域层级配置的(Cloud Run域名映射属于区域级资源)
- 检查是否已启用Cloud Run API:执行命令
gcloud services enable run.googleapis.com - 验证域名是否已在GCP Cloud DNS完成配置,且通过了域名所有权验证(这是创建域名映射的前置条件)
内容的提问来源于stack exchange,提问作者Michiel
相关产品推荐
相关产品推荐

