Я хочу создать общедоступный 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
для достижения этого?
Вам придется использовать 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» не отображается в пользовательском интерфейсе, в качестве «теста» я попытался добавить его вручную, и он сказал, что принцип уже существует.
Если вы щелкнете меню гамбургера (вертела?) В крайнем правом углу вашего ведра и перейдете к «Редактировать доступ», именно здесь будет добавлена роль «Просмотр объектов хранилища».
Кажется, существует задержка между созданием ресурса и отображением рассматриваемой строки в интерфейсе Google Cloud. Сегодня это показано в пользовательском интерфейсе. Собственно, это и есть причина моего вопроса. Сначала я попробовал с тем же кодом, который вы предложили, но я его там не увидел, поэтому подумал, что сделал что-то не так.
Спасибо за Ваш ответ. Когда я вручную добавляю принцип «allUsers» с разрешением objectViewer, на вкладке разрешений корзины в режиме «просмотр по принципу» у меня есть «allUsers», который относится к группе типов. Но когда я использую предложенный вами код, его там нет. Любая идея, почему это? Я действительно хочу воспроизвести это: создайте ведро> добавьте участника «allUsers» с «roles/storage.objectViewer».