terraformgoogle-cloud-storage

Failing to create a google GCS bucket because of googleapi: Error 400: Invalid argument., invalid


I'm getting a googleapi: Error 400: Invalid argument., invalid with no additional information at all. And I have absolutely no clue what is causing this. The bucket name is compliant AFAIK.

Error: googleapi: Error 400: Invalid argument., invalid

with module.buckets["customer-user-bio-ew2-rmv-dev"].module.gcs_bucket.google_storage_bucket.bucket,
on .terraform/modules/buckets.gcs_bucket/modules/simple_bucket/main.tf line 22, in resource "google_storage_bucket" "bucket":
22: resource "google_storage_bucket" "bucket" {

The TF code

module "buckets" {
  for_each                               = var.buckets
  source                                 = "source pasted below"
  version                                = "3.2.0"
  bucket_name                            = each.key
  project                                = var.project_id
  location                               = each.value["location"]
  storage_class                          = each.value["storage_class"]
  versioning                             = each.value["versioning"]
  create_generic_storage_object_admin_sa = each.value["create_generic_storage_object_admin_sa"]
  storage_object_viewers                 = each.value["storage_object_viewers"]
  storage_object_users                   = each.value["storage_object_users"]
  lifecycle_rules                        = each.value["lifecycle_rules"]
  depends_on                             = [google_service_account.service_accounts]
  enforced_labels                        = each.value["enforced_labels"]
}

inputs = {  
    ...
    ...
    buckets = {
        "some-name-${local.environment}" = {
          project                                = local.project_id
          location                               = "europe-west2"
          storage_class                          = "STANDARD"
          versioning                             = false
          storage_object_viewers                 = [..]
          storage_object_users                   = [..]
          create_generic_storage_object_admin_sa = false
          lifecycle_rules = [{
            condition = {
              age                        = 0    # immediately
              num_newer_versions         = null # Max number of versions to keep per object
              days_since_noncurrent_time = null # Expire non-current versions after x days
            }
            action = {
              type          = "SetStorageClass"
              storage_class = "STANDARD"
            }
          }]
          enforced_labels = {
            owner       = "some-team"
            environment = local.environment
          }
        }
}

the source module

module "gcs_bucket" {
  source           = "terraform-google-modules/cloud-storage/google//modules/simple_bucket"
  version          = "9.1.0"
  project_id       = var.project
  name             = var.bucket_name
  location         = var.location
  storage_class    = var.storage_class
  versioning       = var.versioning
  retention_policy = var.retention_policy
  lifecycle_rules  = var.lifecycle_rules
  labels           = merge(var.enforced_labels, var.optional_labels)
}

Any sort of clues would be welcome!

I tried changing the bucket name, changing the service account names, removing the lifecycles rules


Solution

  • Fixed by modifying the lifecycle rules to:

    condition = {
      age = 1
    }