Skip to content

Commit 607ec3d

Browse files
committed
fix: allow null values in lifecycle configuration
1 parent 5475b21 commit 607ec3d

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

main.tf

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" {
262262

263263
# Max 1 block - expiration
264264
dynamic "expiration" {
265-
for_each = try(flatten([rule.value.expiration]), [])
265+
for_each = try(compact(flatten([rule.value.expiration])), [])
266266

267267
content {
268268
date = try(expiration.value.date, null)
@@ -273,7 +273,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" {
273273

274274
# Several blocks - transition
275275
dynamic "transition" {
276-
for_each = try(flatten([rule.value.transition]), [])
276+
for_each = try(compact(flatten([rule.value.transition])), [])
277277

278278
content {
279279
date = try(transition.value.date, null)
@@ -284,7 +284,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" {
284284

285285
# Max 1 block - noncurrent_version_expiration
286286
dynamic "noncurrent_version_expiration" {
287-
for_each = try(flatten([rule.value.noncurrent_version_expiration]), [])
287+
for_each = try(compact(flatten([rule.value.noncurrent_version_expiration])), [])
288288

289289
content {
290290
newer_noncurrent_versions = try(noncurrent_version_expiration.value.newer_noncurrent_versions, null)
@@ -294,7 +294,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" {
294294

295295
# Several blocks - noncurrent_version_transition
296296
dynamic "noncurrent_version_transition" {
297-
for_each = try(flatten([rule.value.noncurrent_version_transition]), [])
297+
for_each = try(compact(flatten([rule.value.noncurrent_version_transition])), [])
298298

299299
content {
300300
newer_noncurrent_versions = try(noncurrent_version_transition.value.newer_noncurrent_versions, null)
@@ -305,7 +305,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" {
305305

306306
# Max 1 block - filter - without any key arguments or tags
307307
dynamic "filter" {
308-
for_each = length(try(flatten([rule.value.filter]), [])) == 0 ? [true] : []
308+
for_each = one(try(flatten([rule.value.filter]), [])) == null ? [true] : []
309309

310310
content {
311311
# prefix = ""
@@ -314,15 +314,15 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" {
314314

315315
# Max 1 block - filter - with one key argument or a single tag
316316
dynamic "filter" {
317-
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]
317+
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]
318318

319319
content {
320320
object_size_greater_than = try(filter.value.object_size_greater_than, null)
321321
object_size_less_than = try(filter.value.object_size_less_than, null)
322322
prefix = try(filter.value.prefix, null)
323323

324324
dynamic "tag" {
325-
for_each = try(filter.value.tags, filter.value.tag, [])
325+
for_each = try(coalesce(filter.value.tags, {}), coalesce(filter.value.tag, {}), [])
326326

327327
content {
328328
key = tag.key
@@ -334,7 +334,7 @@ resource "aws_s3_bucket_lifecycle_configuration" "this" {
334334

335335
# Max 1 block - filter - with more than one key arguments or multiple tags
336336
dynamic "filter" {
337-
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]
337+
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]
338338

339339
content {
340340
and {

0 commit comments

Comments
 (0)