使用Terraform配置Cloud Run公网访问时遇403权限错误求助
问题分析与解决方案
核心问题
你使用了v2版本的Cloud Run服务资源(google_cloud_run_v2_service),但绑定IAM权限时用的是v1版本的IAM资源(google_cloud_run_service_iam_binding),两者不兼容,导致权限设置时出现403错误。
修复步骤
将IAM绑定资源替换为v2对应的版本google_cloud_run_v2_service_iam_binding,修改后的完整配置如下:
terraform { required_providers { google = { source = "hashicorp/google" version = "4.51.0" } } } provider "google" { credentials = file(var.credentials_file) project = var.project region = var.region } resource "google_cloud_run_v2_service" "terra_demo" { name = "cloudrun-service-demo" location = var.region ingress = "INGRESS_TRAFFIC_ALL" template { containers { image = "us-central1-docker.pkg.dev/${var.project}/${var.container_repository}/${var.container_name}" } } depends_on = [google_project_service.run] } # 使用v2版本的IAM绑定资源 resource "google_cloud_run_v2_service_iam_binding" "default" { location = google_cloud_run_v2_service.terra_demo.location service = google_cloud_run_v2_service.terra_demo.name role = "roles/run.invoker" members = [ "allUsers" ] # 显式依赖服务创建完成,避免时序问题 depends_on = [google_cloud_run_v2_service.terra_demo] }
额外验证点
- 确认
google_project_service.run资源已正确启用Cloud Run API(你已成功创建服务,这一步应该无问题) - 服务账号的Owner角色权限会即时生效,若仍有异常,可重新生成服务账号密钥并替换
var.credentials_file
内容的提问来源于stack exchange,提问作者SBUK-Tech
相关产品推荐
相关产品推荐

