Хотите развернуть хранилище с доступным для чтения разрешением c объекта хранения в GCP, используя terraform - PullRequest
1 голос
/ 04 февраля 2020

Я создал файл terraform для создания корзины Google Storage с общедоступным c читаемым разрешением объекта Storage. Я могу развернуть корзину хранения, но не могу назначить правильный ACL для моего шаблона, я обнаружил некоторые ошибки для части ACL.

provider "google-beta" {
  project = "${var.project}"
}

 resource "google_storage_default_object_access_control" "public_rule" {
  bucket = "google_storage_bucket.test-${var.project}"
  role   = "READER"
  entity = "allUsers"
 }

resource "google_storage_bucket" "bucket" {
  name = "test-${var.project}"
  storage_class = "standard"
  location = "US"
}

ОШИБКА: присоединено enter image description here

если кто-нибудь может помочь мне назначить разрешение во время создания корзины, будет здорово.

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Спасибо Nibrass.

Собираюсь развернуть с нижеуказанным форматом. и это решит мою проблему.

  provider "google-beta" {
  project = "${var.project}"
}

data "google_iam_policy" "viewer" {
  binding {
    role = "roles/storage.objectViewer"
    members = [
        "allUsers",
    ] 
  }
}

resource "google_storage_bucket_iam_policy" "editor" {
  bucket = "${google_storage_bucket.bucket.name}"
  policy_data = "${data.google_iam_policy.viewer.policy_data}"
}

resource "google_storage_bucket" "bucket" {
  name = "${var.project}-xxxx"
  storage_class = "xxxxx"
  location = "xxxxxxx"
}
1 голос
/ 05 февраля 2020

Согласно Официальная документация Terraform , используется функция "bucket.name", и она считывает имя корзины из переменной "name". Также вы должны предоставить свой идентификатор проекта в resource_storage_bucket, как показано ниже. Я попробовал его, и он работал правильно для меня:

provider "google-beta" {
}
 resource "google_storage_default_object_access_control" "public_rule" {
  bucket = google_storage_bucket.bucket.name
  role   = "READER"
  entity = "allUsers"
 }
resource "google_storage_bucket" "bucket" {
  name = "[THE_BUCKET_NAME]"
  project = "[PROJECT_ID]"
  storage_class = "standard"
  location = "US"

, где PROJECT_ID - это идентификатор вашего проекта, а THE_BUCKET_NAME - это имя сегмента, который вы хотите поместить.

...