Skip to content

Commit 15d366d

Browse files
FEATURE CE-454: Set Config retention via native TF
1 parent c5824a3 commit 15d366d

File tree

6 files changed

+30
-91
lines changed

6 files changed

+30
-91
lines changed

config_baselines.tf

+17-42
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ module "config_baseline_ap-northeast-1" {
115115
sns_topic_name = var.config_sns_topic_name
116116
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
117117
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "ap-northeast-1"
118+
config_retention_days = var.config_retention_days
118119
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "ap-northeast-1") : false
119120
limit_resource_types = var.config_limit_resource_types
120121

@@ -138,6 +139,7 @@ module "config_baseline_ap-northeast-2" {
138139
sns_topic_name = var.config_sns_topic_name
139140
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
140141
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "ap-northeast-2"
142+
config_retention_days = var.config_retention_days
141143
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "ap-northeast-2") : false
142144
limit_resource_types = var.config_limit_resource_types
143145

@@ -161,6 +163,7 @@ module "config_baseline_ap-northeast-3" {
161163
sns_topic_name = var.config_sns_topic_name
162164
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
163165
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "ap-northeast-3"
166+
config_retention_days = var.config_retention_days
164167
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "ap-northeast-3") : false
165168
limit_resource_types = var.config_limit_resource_types
166169

@@ -184,6 +187,7 @@ module "config_baseline_ap-south-1" {
184187
sns_topic_name = var.config_sns_topic_name
185188
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
186189
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "ap-south-1"
190+
config_retention_days = var.config_retention_days
187191
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "ap-south-1") : false
188192
limit_resource_types = var.config_limit_resource_types
189193

@@ -207,6 +211,7 @@ module "config_baseline_ap-southeast-1" {
207211
sns_topic_name = var.config_sns_topic_name
208212
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
209213
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "ap-southeast-1"
214+
config_retention_days = var.config_retention_days
210215
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "ap-southeast-1") : false
211216
limit_resource_types = var.config_limit_resource_types
212217

@@ -230,6 +235,7 @@ module "config_baseline_ap-southeast-2" {
230235
sns_topic_name = var.config_sns_topic_name
231236
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
232237
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "ap-southeast-2"
238+
config_retention_days = var.config_retention_days
233239
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "ap-southeast-2") : false
234240
limit_resource_types = var.config_limit_resource_types
235241

@@ -253,6 +259,7 @@ module "config_baseline_ca-central-1" {
253259
sns_topic_name = var.config_sns_topic_name
254260
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
255261
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "ca-central-1"
262+
config_retention_days = var.config_retention_days
256263
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "ca-central-1") : false
257264
limit_resource_types = var.config_limit_resource_types
258265

@@ -276,6 +283,7 @@ module "config_baseline_eu-central-1" {
276283
sns_topic_name = var.config_sns_topic_name
277284
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
278285
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "eu-central-1"
286+
config_retention_days = var.config_retention_days
279287
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "eu-central-1") : false
280288
limit_resource_types = var.config_limit_resource_types
281289

@@ -299,6 +307,7 @@ module "config_baseline_eu-north-1" {
299307
sns_topic_name = var.config_sns_topic_name
300308
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
301309
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "eu-north-1"
310+
config_retention_days = var.config_retention_days
302311
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "eu-north-1") : false
303312
limit_resource_types = var.config_limit_resource_types
304313

@@ -322,6 +331,7 @@ module "config_baseline_eu-west-1" {
322331
sns_topic_name = var.config_sns_topic_name
323332
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
324333
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "eu-west-1"
334+
config_retention_days = var.config_retention_days
325335
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "eu-west-1") : false
326336
limit_resource_types = var.config_limit_resource_types
327337

@@ -345,6 +355,7 @@ module "config_baseline_eu-west-2" {
345355
sns_topic_name = var.config_sns_topic_name
346356
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
347357
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "eu-west-2"
358+
config_retention_days = var.config_retention_days
348359
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "eu-west-2") : false
349360
limit_resource_types = var.config_limit_resource_types
350361

@@ -368,6 +379,7 @@ module "config_baseline_eu-west-3" {
368379
sns_topic_name = var.config_sns_topic_name
369380
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
370381
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "eu-west-3"
382+
config_retention_days = var.config_retention_days
371383
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "eu-west-3") : false
372384
limit_resource_types = var.config_limit_resource_types
373385

@@ -391,6 +403,7 @@ module "config_baseline_sa-east-1" {
391403
sns_topic_name = var.config_sns_topic_name
392404
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
393405
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "sa-east-1"
406+
config_retention_days = var.config_retention_days
394407
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "sa-east-1") : false
395408
limit_resource_types = var.config_limit_resource_types
396409

@@ -414,6 +427,7 @@ module "config_baseline_us-east-1" {
414427
sns_topic_name = var.config_sns_topic_name
415428
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
416429
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "us-east-1"
430+
config_retention_days = var.config_retention_days
417431
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "us-east-1") : false
418432
limit_resource_types = var.config_limit_resource_types
419433

@@ -437,6 +451,7 @@ module "config_baseline_us-east-2" {
437451
sns_topic_name = var.config_sns_topic_name
438452
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
439453
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "us-east-2"
454+
config_retention_days = var.config_retention_days
440455
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "us-east-2") : false
441456
limit_resource_types = var.config_limit_resource_types
442457

@@ -460,6 +475,7 @@ module "config_baseline_us-west-1" {
460475
sns_topic_name = var.config_sns_topic_name
461476
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
462477
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "us-west-1"
478+
config_retention_days = var.config_retention_days
463479
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "us-west-1") : false
464480
limit_resource_types = var.config_limit_resource_types
465481

@@ -483,6 +499,7 @@ module "config_baseline_us-west-2" {
483499
sns_topic_name = var.config_sns_topic_name
484500
sns_topic_kms_master_key_id = var.config_sns_topic_kms_master_key_id
485501
include_global_resource_types = var.config_global_resources_all_regions ? true : var.region == "us-west-2"
502+
config_retention_days = var.config_retention_days
486503
continuous_recording = var.config_continuous_recording ? contains(var.config_continuous_recording_regions, "us-west-2") : false
487504
limit_resource_types = var.config_limit_resource_types
488505

@@ -690,45 +707,3 @@ resource "aws_config_configuration_aggregator" "organization" {
690707

691708
tags = var.tags
692709
}
693-
694-
695-
696-
### Provision Config recorder attributes not supported by provider yet:
697-
# recorder frequency (https://github.com/hashicorp/terraform-provider-aws/pull/35527)
698-
# Config retention (https://github.com/hashicorp/terraform-provider-aws/issues/13305)
699-
resource "terraform_data" "recorder_tuning" {
700-
count = var.config_baseline_enabled && var.config_tuning_enabled ? 1 : 0
701-
702-
triggers_replace = concat(
703-
module.config_baseline_ap-northeast-1[*].configuration_recorder,
704-
module.config_baseline_ap-northeast-2[*].configuration_recorder,
705-
module.config_baseline_ap-northeast-3[*].configuration_recorder,
706-
module.config_baseline_ap-south-1[*].configuration_recorder,
707-
module.config_baseline_ap-southeast-1[*].configuration_recorder,
708-
module.config_baseline_ap-southeast-2[*].configuration_recorder,
709-
module.config_baseline_ca-central-1[*].configuration_recorder,
710-
module.config_baseline_eu-central-1[*].configuration_recorder,
711-
module.config_baseline_eu-north-1[*].configuration_recorder,
712-
module.config_baseline_eu-west-1[*].configuration_recorder,
713-
module.config_baseline_eu-west-2[*].configuration_recorder,
714-
module.config_baseline_eu-west-3[*].configuration_recorder,
715-
module.config_baseline_sa-east-1[*].configuration_recorder,
716-
module.config_baseline_us-east-1[*].configuration_recorder,
717-
module.config_baseline_us-east-2[*].configuration_recorder,
718-
module.config_baseline_us-west-1[*].configuration_recorder,
719-
module.config_baseline_us-west-2[*].configuration_recorder,
720-
[
721-
var.config_retention_days,
722-
],
723-
)
724-
725-
provisioner "local-exec" {
726-
command = "${path.module}/resources/config_recorder.py"
727-
interpreter = ["python3"]
728-
environment = {
729-
CONFIG_RECORDER_RETENTION = var.config_retention_days
730-
CONFIG_REGIONS = join(",", var.target_regions)
731-
TF_AWS_ROLE = data.aws_iam_session_context.current.issuer_arn
732-
}
733-
}
734-
}

main.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.38"
7+
version = ">= 5.39"
88

99
# A provider alias should be passed for each AWS region.
1010
# Reference: https://docs.aws.amazon.com/general/latest/gr/rande.html

modules/config-baseline/main.tf

+6
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ resource "aws_config_configuration_recorder" "recorder" {
3939
name = var.recorder_name
4040
role_arn = var.iam_role_arn
4141

42+
4243
recording_group {
4344
all_supported = length(var.limit_resource_types) == 0
4445
include_global_resource_types = length(var.limit_resource_types) == 0 ? var.include_global_resource_types : false
@@ -53,6 +54,11 @@ resource "aws_config_configuration_recorder" "recorder" {
5354
}
5455
}
5556

57+
resource "aws_config_retention_configuration" "this" {
58+
count = var.config_retention_days == 0 ? 0 : 1
59+
retention_period_in_days = var.config_retention_days
60+
}
61+
5662
resource "aws_config_delivery_channel" "bucket" {
5763
name = var.delivery_channel_name
5864
s3_bucket_name = var.s3_bucket_name

modules/config-baseline/variables.tf

+6
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ variable "delivery_channel_name" {
4444
default = "default"
4545
}
4646

47+
variable "config_retention_days" {
48+
description = "AWS Config retention in days. 0 disables setting retention."
49+
type = number
50+
default = 0
51+
}
52+
4753
variable "continuous_recording" {
4854
description = "Enable CONTINUOUS recording (as opposed to DAILY)."
4955
type = bool

resources/config_recorder.py

-42
This file was deleted.

variables.tf

-6
Original file line numberDiff line numberDiff line change
@@ -295,12 +295,6 @@ variable "config_s3_bucket_retention_days" {
295295
default = 0
296296
}
297297

298-
variable "config_tuning_enabled" {
299-
description = "Tune AWS Config frequency & retention using Python local provisioner."
300-
type = bool
301-
default = false
302-
}
303-
304298
variable "config_retention_days" {
305299
description = "AWS Config retention in days. 0 disables setting retention."
306300
type = number

0 commit comments

Comments
 (0)