Как условно включить / отключить lifecycle_rule для хранилищ GCP - PullRequest
0 голосов
/ 04 июля 2019

В моем модуле я хочу включить или отключить gcp bucket lifecycle_rule в зависимости от того, установлена ​​ли переменная, поэтому в основном я хочу, чтобы в некоторых корзинах было включено правило, а в других - игнорировать настройку правила. Но terraform не поддерживает enabled для GCP lifecycle_rule, который мог бы легко это сделать (см. Ссылку AWS ниже).

AWS: https://www.terraform.io/docs/providers/aws/r/s3_bucket.html#enabled-1

GCP: https://www.terraform.io/docs/providers/google/r/storage_bucket.html#lifecycle_rule

Я попытался условно установить тип действия правила и storage_class равным ""

    resource "google_storage_bucket" "bucket_ageoff" {
      count = "${var.enable_ageoff}"

      name     = "${local.bucket_name}"
      project  = "${local.project_id}"
      location = "${var.region}"

      storage_class = "${local.bucket_storage_class}"

      encryption {
        default_kms_key_name = "${google_kms_crypto_key.bucket_key.self_link}"
      }

      logging {
        log_bucket = "${google_storage_bucket.log_bucket.name}"
      }

      labels {
        "environment" = "${var.env}"
      }

      lifecycle_rule {
        action {
          type = "Delete"
        }

        condition {
          age = "${var.ageoff_days}"
        }
      }

      lifecycle_rule {
        action {
          type = "${var.coldline_days != ""  ? "SetStorageClass" : ""}"
          storage_class = "${var.coldline_days != ""  ? "COLDLINE" : ""}"
        }

        condition {
          age = "${var.coldline_days != "" ? var.coldline_days : "0"}"
        }
      }

      }
    }

но gcp api выдает эту ошибку:

Произошла 1 ошибка (и):

  • module.log_archive_bucket.google_storage_bucket.bucket_ageoff: 1 произошла ошибка:

  • google_storage_bucket.bucket_ageoff: googleapi: Ошибка 400: неверный аргумент, неверный

Ниже показано, что на самом деле пытается сделать код:

      ...
      lifecycle_rule {
        //enabled is supported by TF for AWS but not GCP
        //enabled = "${var.coldline_days != "" ? true : false }"

        action {
          type = "SetStorageClass"
          storage_class = "COLDLINE"
        }

        condition {
          age = "${var.coldline_days != "" ? var.coldline_days : "0" }"
        }

      }
    }

Ошибка: module.log_archive_bucket.google_storage_bucket.bucket_ageoff: lifecycle_rule.1: неверный или неизвестный ключ: включен

Любая идея для реализации вышеуказанного требования приветствуется.

...