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
Fixed by modifying the lifecycle rules to:
condition = {
age = 1
}