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

Terraform中google_artifact_registry_repository忽略depends_on属性问题

问题原因

你配置的depends_on依赖规则实际已经生效,问题根源是GCP云服务的最终一致性特性:

  • Terraform GCP Provider对google_project_service资源的创建完成判定标准,仅为GCP返回已接收API启用请求,而非API服务全局完全就绪可用。GCP的API启用请求提交后,相关权限配置、服务路由需要几秒到几十秒的异步传播时间才能在所有区域生效,这个过程Terraform无法感知,会直接标记google_project_service资源创建完成。
  • 首次执行terraform apply时,google_project_service刚标记完成就立刻启动Artifact Registry仓库的创建流程,此时artifactregistry.googleapis.com在你选择的europe-west1区域还未完成生效,因此报出权限不足错误。第二次执行时API传播已经完成,所以可以正常创建资源。
解决方案
  • 方案1:新增固定等待延迟资源,确保API传播完成后再创建AR仓库
# 引入time provider
terraform {
  required_providers {
    time = {
      source = "hashicorp/time"
      version = ">= 0.10.0"
    }
  }
}

# API启用后等待30秒用于传播
resource "time_sleep" "wait_for_ar_api_propagation" {
  create_duration = "30s"
  depends_on = [google_project_service.artifactregistry_googleapis_com]
}

# 修改AR仓库依赖,等待延迟结束后再创建
resource "google_artifact_registry_repository" "my_ar" {
  provider = google-beta
  format = "DOCKER"
  repository_id = "myreponame"
  location = "europe-west1"
  project = google_project.my_project.project_id
  depends_on = [time_sleep.wait_for_ar_api_propagation]
}
  • 方案2:调整Provider重试策略
    你可以在GCP Provider配置中增加超时重试参数,让Provider遇到临时权限错误时自动重试,无需手动二次执行,适合不希望增加固定等待时间的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:27:04