From 607ec3d90e745c363168f903e4a40a1a21712f96 Mon Sep 17 00:00:00 2001 From: Gustavo Antoniassi Date: Fri, 24 Jan 2025 19:35:44 -0300 Subject: [PATCH] fix: allow null values in lifecycle configuration --- main.tf | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/main.tf b/main.tf index ce49ab09..d264854c 100644 --- a/main.tf +++ b/main.tf @@ -262,7 +262,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" { # Max 1 block - expiration dynamic "expiration" { - for_each = try(flatten([rule.value.expiration]), []) + for_each = try(compact(flatten([rule.value.expiration])), []) content { date = try(expiration.value.date, null) @@ -273,7 +273,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" { # Several blocks - transition dynamic "transition" { - for_each = try(flatten([rule.value.transition]), []) + for_each = try(compact(flatten([rule.value.transition])), []) content { date = try(transition.value.date, null) @@ -284,7 +284,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" { # Max 1 block - noncurrent_version_expiration dynamic "noncurrent_version_expiration" { - for_each = try(flatten([rule.value.noncurrent_version_expiration]), []) + for_each = try(compact(flatten([rule.value.noncurrent_version_expiration])), []) content { newer_noncurrent_versions = try(noncurrent_version_expiration.value.newer_noncurrent_versions, null) @@ -294,7 +294,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" { # Several blocks - noncurrent_version_transition dynamic "noncurrent_version_transition" { - for_each = try(flatten([rule.value.noncurrent_version_transition]), []) + for_each = try(compact(flatten([rule.value.noncurrent_version_transition])), []) content { newer_noncurrent_versions = try(noncurrent_version_transition.value.newer_noncurrent_versions, null) @@ -305,7 +305,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" { # Max 1 block - filter - without any key arguments or tags dynamic "filter" { - for_each = length(try(flatten([rule.value.filter]), [])) == 0 ? [true] : [] + for_each = one(try(flatten([rule.value.filter]), [])) == null ? [true] : [] content { # prefix = "" @@ -314,7 +314,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" { # Max 1 block - filter - with one key argument or a single tag dynamic "filter" { - for_each = [for v in try(flatten([rule.value.filter]), []) : v if max(length(keys(v)), length(try(rule.value.filter.tags, rule.value.filter.tag, []))) == 1] + for_each = [for v in try(rule.value.filter == null ? [] : flatten([rule.value.filter]), []) : v if max(length(keys(v)), try(length(rule.value.filter.tags), length(rule.value.filter.tag), 0)) == 1] content { object_size_greater_than = try(filter.value.object_size_greater_than, null) @@ -322,7 +322,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" { prefix = try(filter.value.prefix, null) dynamic "tag" { - for_each = try(filter.value.tags, filter.value.tag, []) + for_each = try(coalesce(filter.value.tags, {}), coalesce(filter.value.tag, {}), []) content { key = tag.key @@ -334,7 +334,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" { # Max 1 block - filter - with more than one key arguments or multiple tags dynamic "filter" { - for_each = [for v in try(flatten([rule.value.filter]), []) : v if max(length(keys(v)), length(try(rule.value.filter.tags, rule.value.filter.tag, []))) > 1] + for_each = [for v in try(rule.value.filter == null ? [] : flatten([rule.value.filter]), []) : v if max(length(keys(v)), try(length(rule.value.filter.tags), length(rule.value.filter.tag), 0)) > 1] content { and {