如何用Terraform创建启用uniform_bucket_level_access的公开GCS存储桶?
问题解答
是的,必须用google_storage_bucket_iam系列资源来实现需求,原因很明确:
当你开启uniform_bucket_level_access = true后,Google Cloud Storage会彻底禁用传统的ACL权限机制,所有权限配置都必须通过IAM完成——这是GCS统一桶级访问的核心限制,所以你用对应ACL API的google_storage_bucket_access_control资源才会触发400错误。
给你改好的可用代码:
resource "google_storage_bucket" "a_bucket" { name = "<name>" location = "<region>" project = var.project_id storage_class = "STANDARD" uniform_bucket_level_access = true versioning { enabled = false } } # 用IAM绑定实现公开访问 resource "google_storage_bucket_iam_binding" "public_access" { bucket = google_storage_bucket.a_bucket.name role = "roles/storage.objectViewer" members = [ "allUsers", ] }
这里用roles/storage.objectViewer角色是为了让所有人能读取桶内的对象;如果还需要让用户能列出桶内对象,可额外添加roles/storage.legacyBucketReader角色,不过通常公开存储桶只需要前者就足够。
内容的提问来源于stack exchange,提问作者YYx00xZZ
相关产品推荐
相关产品推荐

