Как создать общедоступную корзину Google с включенным uniform_bucket_level_access?

Я хочу создать общедоступный Google Cloud Bucket с включенным uniform_bucket_level_access с помощью terraform. Все примеры в документации провайдера, предназначенные для общедоступной корзины, не содержат этот параметр.

Когда я пытаюсь использовать:

resource "google_storage_bucket_access_control" "public_rule" {
  bucket = google_storage_bucket.a_bucket.name
  role   = "READER"
  entity = "allUsers"
}

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
  }
}

Я получаю следующую ошибку:

 Error: Error creating BucketAccessControl: googleapi: Error 400: Cannot use ACL API to update bucket policy when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access, invalid

Если я уберу строку для единого доступа, все будет работать как положено. Должен ли я использовать ресурс google_storage_bucket_iam для достижения этого?

Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам придется использовать google_storage_bucket_iam. Мне нравится использовать членский, поэтому я случайно не забиваю другие привязки IAM, но вы можете использовать все, что диктуют ваши потребности.

resource "google_storage_bucket_iam_member" "member" {
  bucket = google_storage_bucket.a_bucket.name
  role   = "roles/storage.objectViewer"
  member = "allUsers"
}

Обновлено: Используйте это вместо ресурса google_storage_bucket_access_controls, который у вас есть.

Спасибо за Ваш ответ. Когда я вручную добавляю принцип «allUsers» с разрешением objectViewer, на вкладке разрешений корзины в режиме «просмотр по принципу» у меня есть «allUsers», который относится к группе типов. Но когда я использую предложенный вами код, его там нет. Любая идея, почему это? Я действительно хочу воспроизвести это: создайте ведро> добавьте участника «allUsers» с «roles/storage.objectViewer».

YYx00xZZ 07.02.2023 16:10

Я только что создал ведро с предложенным вами решением, и хотя принципал «allUsers» не отображается в пользовательском интерфейсе, в качестве «теста» я попытался добавить его вручную, и он сказал, что принцип уже существует.

YYx00xZZ 07.02.2023 16:31

Если вы щелкнете меню гамбургера (вертела?) В крайнем правом углу вашего ведра и перейдете к «Редактировать доступ», именно здесь будет добавлена ​​​​роль «Просмотр объектов хранилища».

Glen Yu 08.02.2023 14:59

Кажется, существует задержка между созданием ресурса и отображением рассматриваемой строки в интерфейсе Google Cloud. Сегодня это показано в пользовательском интерфейсе. Собственно, это и есть причина моего вопроса. Сначала я попробовал с тем же кодом, который вы предложили, но я его там не увидел, поэтому подумал, что сделал что-то не так.

YYx00xZZ 08.02.2023 22:18

Другие вопросы по теме