Skip to content

Commit 63e0576

Browse files
feat: Add support for CloudWatch log group KMS key (#31)
Co-authored-by: Bryant Biggs <[email protected]>
1 parent 1ea47ff commit 63e0576

File tree

13 files changed

+51
-0
lines changed

13 files changed

+51
-0
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ Examples codified under the [`examples`](https://github.com/terraform-aws-module
135135
| <a name="input_log_forwarder_kms_key_arn"></a> [log\_forwarder\_kms\_key\_arn](#input\_log\_forwarder\_kms\_key\_arn) | KMS key that is used to encrypt environment variables. If this configuration is not provided when environment variables are in use, AWS Lambda uses a default service key | `string` | `null` | no |
136136
| <a name="input_log_forwarder_lambda_tags"></a> [log\_forwarder\_lambda\_tags](#input\_log\_forwarder\_lambda\_tags) | A map of tags to apply to the log forwarder lambda function | `map(string)` | `{}` | no |
137137
| <a name="input_log_forwarder_layers"></a> [log\_forwarder\_layers](#input\_log\_forwarder\_layers) | List of Lambda Layer Version ARNs (maximum of 5) to attach to the log forwarder lambda | `list(string)` | `[]` | no |
138+
| <a name="input_log_forwarder_log_kms_key_id"></a> [log\_forwarder\_log\_kms\_key\_id](#input\_log\_forwarder\_log\_kms\_key\_id) | The AWS KMS Key ARN to use for CloudWatch log group encryption | `string` | `null` | no |
138139
| <a name="input_log_forwarder_log_retention_days"></a> [log\_forwarder\_log\_retention\_days](#input\_log\_forwarder\_log\_retention\_days) | Log forwarder CloudWatch log group retention in days | `number` | `7` | no |
139140
| <a name="input_log_forwarder_memory_size"></a> [log\_forwarder\_memory\_size](#input\_log\_forwarder\_memory\_size) | Memory size for the log forwarder lambda function | `number` | `1024` | no |
140141
| <a name="input_log_forwarder_name"></a> [log\_forwarder\_name](#input\_log\_forwarder\_name) | Log forwarder lambda name | `string` | `"datadog-log-forwarder"` | no |
@@ -181,6 +182,7 @@ Examples codified under the [`examples`](https://github.com/terraform-aws-module
181182
| <a name="input_rds_em_forwarder_kms_key_arn"></a> [rds\_em\_forwarder\_kms\_key\_arn](#input\_rds\_em\_forwarder\_kms\_key\_arn) | KMS key that is used to encrypt environment variables. If this configuration is not provided when environment variables are in use, AWS Lambda uses a default service key | `string` | `null` | no |
182183
| <a name="input_rds_em_forwarder_lambda_tags"></a> [rds\_em\_forwarder\_lambda\_tags](#input\_rds\_em\_forwarder\_lambda\_tags) | A map of tags to apply to the RDS enhanced monitoring forwarder lambda function | `map(string)` | `{}` | no |
183184
| <a name="input_rds_em_forwarder_layers"></a> [rds\_em\_forwarder\_layers](#input\_rds\_em\_forwarder\_layers) | List of Lambda Layer Version ARNs (maximum of 5) to attach to the RDS enhanced monitoring forwarder lambda | `list(string)` | `[]` | no |
185+
| <a name="input_rds_em_forwarder_log_kms_key_id"></a> [rds\_em\_forwarder\_log\_kms\_key\_id](#input\_rds\_em\_forwarder\_log\_kms\_key\_id) | The AWS KMS Key ARN to use for CloudWatch log group encryption | `string` | `null` | no |
184186
| <a name="input_rds_em_forwarder_log_retention_days"></a> [rds\_em\_forwarder\_log\_retention\_days](#input\_rds\_em\_forwarder\_log\_retention\_days) | RDS enhanced monitoring forwarder CloudWatch log group retention in days | `number` | `7` | no |
185187
| <a name="input_rds_em_forwarder_memory_size"></a> [rds\_em\_forwarder\_memory\_size](#input\_rds\_em\_forwarder\_memory\_size) | Memory size for the RDS enhanced monitoring forwarder lambda function | `number` | `256` | no |
186188
| <a name="input_rds_em_forwarder_name"></a> [rds\_em\_forwarder\_name](#input\_rds\_em\_forwarder\_name) | RDS enhanced monitoring forwarder lambda name | `string` | `"datadog-rds-enhanced-monitoring-forwarder"` | no |
@@ -213,6 +215,7 @@ Examples codified under the [`examples`](https://github.com/terraform-aws-module
213215
| <a name="input_vpc_fl_forwarder_kms_key_arn"></a> [vpc\_fl\_forwarder\_kms\_key\_arn](#input\_vpc\_fl\_forwarder\_kms\_key\_arn) | KMS key that is used to encrypt environment variables. If this configuration is not provided when environment variables are in use, AWS Lambda uses a default service key | `string` | `null` | no |
214216
| <a name="input_vpc_fl_forwarder_lambda_tags"></a> [vpc\_fl\_forwarder\_lambda\_tags](#input\_vpc\_fl\_forwarder\_lambda\_tags) | A map of tags to apply to the VPC flow log forwarder lambda function | `map(string)` | `{}` | no |
215217
| <a name="input_vpc_fl_forwarder_layers"></a> [vpc\_fl\_forwarder\_layers](#input\_vpc\_fl\_forwarder\_layers) | List of Lambda Layer Version ARNs (maximum of 5) to attach to the VPC flow log forwarder lambda | `list(string)` | `[]` | no |
218+
| <a name="input_vpc_fl_forwarder_log_kms_key_id"></a> [vpc\_fl\_forwarder\_log\_kms\_key\_id](#input\_vpc\_fl\_forwarder\_log\_kms\_key\_id) | The AWS KMS Key ARN to use for CloudWatch log group encryption | `string` | `null` | no |
216219
| <a name="input_vpc_fl_forwarder_log_retention_days"></a> [vpc\_fl\_forwarder\_log\_retention\_days](#input\_vpc\_fl\_forwarder\_log\_retention\_days) | VPC flow log forwarder CloudWatch log group retention in days | `number` | `7` | no |
217220
| <a name="input_vpc_fl_forwarder_memory_size"></a> [vpc\_fl\_forwarder\_memory\_size](#input\_vpc\_fl\_forwarder\_memory\_size) | Memory size for the VPC flow log forwarder lambda function | `number` | `256` | no |
218221
| <a name="input_vpc_fl_forwarder_name"></a> [vpc\_fl\_forwarder\_name](#input\_vpc\_fl\_forwarder\_name) | VPC flow log forwarder lambda name | `string` | `"datadog-vpc-flow-log-forwarder"` | no |

examples/complete/main.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ module "default" {
106106
DD_URL = "api-pvtlink.logs.datadoghq.com" # log forwarder
107107
}
108108
log_forwarder_lambda_tags = { LogForwarderLambda = true }
109+
log_forwarder_log_kms_key_id = aws_kms_alias.datadog.target_key_arn
109110
log_forwarder_log_retention_days = 3
110111
log_forwarder_bucket_prefix = "logforwarder"
111112
log_forwarder_s3_zip_server_side_encryption = "AES256"
@@ -129,6 +130,7 @@ module "default" {
129130
rds_em_forwarder_security_group_ids = [module.security_group.security_group_id]
130131
rds_em_forwarder_environment_variables = {}
131132
rds_em_forwarder_lambda_tags = { RdsForwarderLambda = true }
133+
rds_em_forwarder_log_kms_key_id = aws_kms_alias.datadog.target_key_arn
132134
rds_em_forwarder_log_retention_days = 3
133135
rds_em_forwarder_use_role_name_prefix = true
134136
rds_em_forwarder_role_path = "/datadog/"
@@ -149,6 +151,7 @@ module "default" {
149151
vpc_fl_forwarder_security_group_ids = [module.security_group.security_group_id]
150152
vpc_fl_forwarder_environment_variables = {}
151153
vpc_fl_forwarder_lambda_tags = { VpcForwarderLambda = true }
154+
vpc_fl_forwarder_log_kms_key_id = aws_kms_alias.datadog.target_key_arn
152155
vpc_fl_forwarder_log_retention_days = 3
153156
vpc_fl_forwarder_use_role_name_prefix = true
154157
vpc_fl_forwarder_role_path = "/datadog/"

main.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ module "log_forwarder" {
2626
environment_variables = var.log_forwarder_environment_variables
2727
lambda_tags = var.log_forwarder_lambda_tags
2828
log_retention_days = var.log_forwarder_log_retention_days
29+
log_kms_key_id = var.log_forwarder_log_kms_key_id
2930

3031
create_bucket = var.create_bucket
3132
bucket_name = var.bucket_name
@@ -86,6 +87,7 @@ module "rds_enhanced_monitoring_forwarder" {
8687
environment_variables = var.rds_em_forwarder_environment_variables
8788
lambda_tags = var.rds_em_forwarder_lambda_tags
8889
log_retention_days = var.rds_em_forwarder_log_retention_days
90+
log_kms_key_id = var.rds_em_forwarder_log_kms_key_id
8991

9092
create_role = var.create_rds_em_forwarder_role
9193
role_arn = var.rds_em_forwarder_role_arn
@@ -133,6 +135,7 @@ module "vpc_flow_log_forwarder" {
133135
environment_variables = var.vpc_fl_forwarder_environment_variables
134136
lambda_tags = var.vpc_fl_forwarder_lambda_tags
135137
log_retention_days = var.vpc_fl_forwarder_log_retention_days
138+
log_kms_key_id = var.vpc_fl_forwarder_log_kms_key_id
136139

137140
create_role = var.create_vpc_fl_forwarder_role
138141
role_arn = var.vpc_fl_forwarder_role_arn

modules/log_forwarder/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ module "datadog_log_forwarder" {
9696
| <a name="input_kms_key_arn"></a> [kms\_key\_arn](#input\_kms\_key\_arn) | KMS key that is used to encrypt environment variables. If this configuration is not provided when environment variables are in use, AWS Lambda uses a default service key | `string` | `null` | no |
9797
| <a name="input_lambda_tags"></a> [lambda\_tags](#input\_lambda\_tags) | A map of tags to apply to the forwarder lambda function | `map(string)` | `{}` | no |
9898
| <a name="input_layers"></a> [layers](#input\_layers) | List of Lambda Layer Version ARNs (maximum of 5) to attach to the forwarder lambda | `list(string)` | `[]` | no |
99+
| <a name="input_log_kms_key_id"></a> [log\_kms\_key\_id](#input\_log\_kms\_key\_id) | The AWS KMS Key ARN to use for CloudWatch log group encryption | `string` | `null` | no |
99100
| <a name="input_log_retention_days"></a> [log\_retention\_days](#input\_log\_retention\_days) | Forwarder CloudWatch log group retention in days | `number` | `7` | no |
100101
| <a name="input_memory_size"></a> [memory\_size](#input\_memory\_size) | Memory size for the forwarder lambda function | `number` | `1024` | no |
101102
| <a name="input_name"></a> [name](#input\_name) | Forwarder lambda name | `string` | `"datadog-log-forwarder"` | no |

modules/log_forwarder/main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ resource "aws_cloudwatch_log_group" "this" {
224224

225225
name = "/aws/lambda/${aws_lambda_function.this[0].function_name}"
226226
retention_in_days = var.log_retention_days
227+
kms_key_id = var.log_kms_key_id
227228

228229
tags = var.tags
229230
}

modules/log_forwarder/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,3 +274,9 @@ variable "log_retention_days" {
274274
type = number
275275
default = 7
276276
}
277+
278+
variable "log_kms_key_id" {
279+
description = "The AWS KMS Key ARN to use for CloudWatch log group encryption"
280+
type = string
281+
default = null
282+
}

modules/rds_enhanced_monitoring_forwarder/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ No modules.
7272
| <a name="input_kms_key_arn"></a> [kms\_key\_arn](#input\_kms\_key\_arn) | KMS key that is used to encrypt environment variables. If this configuration is not provided when environment variables are in use, AWS Lambda uses a default service key | `string` | `null` | no |
7373
| <a name="input_lambda_tags"></a> [lambda\_tags](#input\_lambda\_tags) | A map of tags to apply to the forwarder lambda function | `map(string)` | `{}` | no |
7474
| <a name="input_layers"></a> [layers](#input\_layers) | List of Lambda Layer Version ARNs (maximum of 5) to attach to the forwarder lambda | `list(string)` | `[]` | no |
75+
| <a name="input_log_kms_key_id"></a> [log\_kms\_key\_id](#input\_log\_kms\_key\_id) | The AWS KMS Key ARN to use for CloudWatch log group encryption | `string` | `null` | no |
7576
| <a name="input_log_retention_days"></a> [log\_retention\_days](#input\_log\_retention\_days) | Forwarder CloudWatch log group retention in days | `number` | `7` | no |
7677
| <a name="input_memory_size"></a> [memory\_size](#input\_memory\_size) | Memory size for the forwarder lambda function | `number` | `256` | no |
7778
| <a name="input_name"></a> [name](#input\_name) | Forwarder lambda name | `string` | `"datadog-rds-enhanced-monitoring-forwarder"` | no |

modules/rds_enhanced_monitoring_forwarder/main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ resource "aws_cloudwatch_log_group" "this" {
132132

133133
name = "/aws/lambda/${aws_lambda_function.this[0].function_name}"
134134
retention_in_days = var.log_retention_days
135+
kms_key_id = var.log_kms_key_id
135136

136137
tags = var.tags
137138
}

modules/rds_enhanced_monitoring_forwarder/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,3 +198,9 @@ variable "log_retention_days" {
198198
type = number
199199
default = 7
200200
}
201+
202+
variable "log_kms_key_id" {
203+
description = "The AWS KMS Key ARN to use for CloudWatch log group encryption"
204+
type = string
205+
default = null
206+
}

modules/vpc_flow_log_forwarder/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ No modules.
7777
| <a name="input_kms_key_arn"></a> [kms\_key\_arn](#input\_kms\_key\_arn) | KMS key that is used to encrypt environment variables. If this configuration is not provided when environment variables are in use, AWS Lambda uses a default service key | `string` | `null` | no |
7878
| <a name="input_lambda_tags"></a> [lambda\_tags](#input\_lambda\_tags) | A map of tags to apply to the forwarder lambda function | `map(string)` | `{}` | no |
7979
| <a name="input_layers"></a> [layers](#input\_layers) | List of Lambda Layer Version ARNs (maximum of 5) to attach to the forwarder lambda | `list(string)` | `[]` | no |
80+
| <a name="input_log_kms_key_id"></a> [log\_kms\_key\_id](#input\_log\_kms\_key\_id) | The AWS KMS Key ARN to use for CloudWatch log group encryption | `string` | `null` | no |
8081
| <a name="input_log_retention_days"></a> [log\_retention\_days](#input\_log\_retention\_days) | Forwarder CloudWatch log group retention in days | `number` | `7` | no |
8182
| <a name="input_memory_size"></a> [memory\_size](#input\_memory\_size) | Memory size for the forwarder lambda function | `number` | `256` | no |
8283
| <a name="input_name"></a> [name](#input\_name) | Forwarder lambda name | `string` | `"datadog-vpc-flow-log-forwarder"` | no |

0 commit comments

Comments
 (0)