使用Terraform部署GCP资源时部分资源出现404错误求助
Terraform部署GCP资源出现404错误(路径重复问题)
问题根因
错误URL中出现重复的organizations/前缀(/v2/organizations/organizations/XXXXXXXXXXX/policies),这是因为在Terraform配置中,你给组织级资源的parent或org_id参数传入了带organizations/前缀的完整路径,而GCP Provider本身会自动为组织资源添加organizations/前缀,导致路径拼接重复,触发404。
解决方案
- 检查所有组织级资源的配置(如
google_org_policy_policy、google_organization_policy、google_monitoring_notification_channel等),将parent或org_id参数的值改为纯数字组织ID,去掉organizations/前缀:
错误配置示例:
正确配置示例:resource "google_org_policy_policy" "primary" { parent = "organizations/XXXXXXXXXXX" # 其他配置项... }
部分资源支持resource "google_org_policy_policy" "primary" { parent = "XXXXXXXXXXX" # 其他配置项... }org_id参数,同样只需传入纯数字ID:resource "google_organization_policy" "example" { org_id = "XXXXXXXXXXX" # 其他配置项... } - 重新初始化Provider并执行部署:
terraform init -upgrade terraform plan terraform apply
补充说明
- 手动创建资源正常是因为GCP控制台或gcloud CLI会自动兼容带前缀的路径格式,但Terraform Provider对参数格式有严格要求,需明确区分纯ID和完整路径。
- 更换多个Provider版本仍出现问题,是因为该参数的解析逻辑在各版本中保持一致,问题核心并非Provider版本,而是配置格式错误。
错误示例
│ <a href=//www.google.com/><span id=logo aria-label=Google></span></a> │ <p><b>404.</b> <ins>That’s an error.</ins> │ <p>The requested URL <code>/v2/organizations/organizations/XXXXXXXXXXX/policies?alt=json</code> was not found on this server. <ins>That’s all we know.</ins> │ │ │ with google_org_policy_policy.primary, │ on main.tf line 5, in resource "google_org_policy_policy" "primary": │ 5: resource "google_org_policy_policy" "primary" {
内容的提问来源于stack exchange,提问作者Mor Y
相关产品推荐
相关产品推荐

