GCP Cloud Run域名映射切换Google Search Console后失效求助
Cloud Run 自定义域名映射握手超时故障排查
问题场景
长期通过Terraform管理GCP Cloud Run自定义域名映射,将域名指向Cloudflare代理URL,此前1-2小时即可完成握手流程。近一周握手始终无法结束,期间未变更操作流程及Cloudflare配置,唯一变动是Google Webmaster Tools替换为Google Search Console后,需重新添加域名并将服务账号(SA)设为所有者,推测是底层配置迁移异常导致故障。
核心排查方向
1. 服务账号权限校验
- 确认Search Console中添加的SA是域名级所有者,而非仅普通用户权限
- 检查GCP侧SA的IAM角色:必须拥有
roles/dns.admin(对应托管该域名的DNS区域)或项目级roles/owner,权限不足会导致GCP无法完成域名归属验证 - 核对SA邮箱格式:必须是
[SA名称]@[项目ID].iam.gserviceaccount.com,避免输入错误
2. 域名验证状态排查
- 用GCP CLI查看映射状态:
gcloud run domain-mappings describe --domain=你的域名 --region=你的区域,重点看status.message字段的错误提示 - 登录Cloud Run控制台,查看域名映射的「验证状态」,是否明确提示未通过归属验证
3. Terraform状态同步检查
- 执行
terraform state show google_cloud_run_domain_mapping.你的映射资源名,对比GCP控制台的实际状态,确认是否存在配置漂移 - 重新运行
terraform plan,检查是否有未应用的IAM绑定或DNS记录变更,尤其是与域名验证相关的资源
4. Search Console验证方式确认
- 确保在Search Console中添加域名时选择的是**「域名」验证方式**(而非URL前缀),这种方式会生成全局DNS验证记录,GCP才能识别域名归属
- 进入Search Console的「所有者」页面,确认SA已出现在所有者列表中,且状态为「已验证」
修复步骤
- 先清理卡住的映射:
gcloud run domain-mappings delete --domain=你的域名 --region=你的区域 - 在Search Console中重新验证SA的所有者权限,确保状态显示「已验证」
- 重新通过Terraform apply创建映射,或手动在Cloud Run控制台配置,观察握手流程是否在1-2小时内完成
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

