@@ -787,6 +787,51 @@ variable "rds_s3_dump_role_arn" {
787787 default = " "
788788}
789789
790+ variable "rds_s3_dump_lifecycle_rules" {
791+ description = " RDS S3 Dump Lifecycle rules"
792+ default = []
793+ type = list (object ({
794+ id = string
795+ status = optional (string , " Enabled" )
796+ prefix = string
797+ expiration = optional (list (object ({
798+ days = optional (number )
799+ date = optional (string )
800+ expired_object_delete_marker = optional (bool )
801+ })), [])
802+ transition = optional (list (object ({
803+ days = optional (number )
804+ date = optional (string )
805+ storage_class = string
806+ })), [])
807+ }))
808+
809+ validation {
810+ condition = length (var. rds_s3_dump_lifecycle_rules ) > 0 ? alltrue ([
811+ for k , v in var . rds_s3_dump_lifecycle_rules : (length (v[" expiration" ]) <= 1 )
812+ ]) : true
813+ error_message = " Only one `expiration` block is allowed."
814+ }
815+
816+ validation {
817+ condition = length (var. rds_s3_dump_lifecycle_rules ) > 0 ? alltrue (flatten ([
818+ for k , v in var . rds_s3_dump_lifecycle_rules : [
819+ for bk , bv in v [" expiration" ] : (bv[" days" ] == null || bv[" date" ] == null )
820+ ]
821+ ])) : true
822+ error_message = " Either `days` or `date` value should be set for `expiration`, but not both."
823+ }
824+
825+ validation {
826+ condition = length (var. rds_s3_dump_lifecycle_rules ) > 0 ? alltrue (flatten ([
827+ for k , v in var . rds_s3_dump_lifecycle_rules : [
828+ for bk , bv in v [" transition" ] : (bv[" days" ] == null || bv[" date" ] == null )
829+ ]
830+ ])) : true
831+ error_message = " Either `days` or `date` value should be set for `transition`, but not both."
832+ }
833+ }
834+
790835variable "rds_identifier_override" {
791836 description = " RDS identifier override. Use only lowercase, numbers and -, _., only use when it needs to be different from var.name"
792837 default = " "
@@ -1164,15 +1209,17 @@ variable "s3_lifecycle_rules" {
11641209 condition = length (var. s3_lifecycle_rules ) > 0 ? alltrue (flatten ([
11651210 for k , v in var . s3_lifecycle_rules : [
11661211 for bk , bv in v [" expiration" ] : (bv[" days" ] == null || bv[" date" ] == null )
1167- ]])) : true
1212+ ]
1213+ ])) : true
11681214 error_message = " Either `days` or `date` value should be set for `expiration`, but not both."
11691215 }
11701216
11711217 validation {
11721218 condition = length (var. s3_lifecycle_rules ) > 0 ? alltrue (flatten ([
11731219 for k , v in var . s3_lifecycle_rules : [
11741220 for bk , bv in v [" transition" ] : (bv[" days" ] == null || bv[" date" ] == null )
1175- ]])) : true
1221+ ]
1222+ ])) : true
11761223 error_message = " Either `days` or `date` value should be set for `transition`, but not both."
11771224 }
11781225}
0 commit comments