Skip to content

Commit d2688cb

Browse files
committed
refactor(rds_enhanced_monitoring_forwarder): replace usage of KMS encrypted environment variable with SecretsManager secret ARN like the log_forwarder
BREAKING CHANGE: `var.kms_alias` removed and `var.dd_api_key` added to `rds_enhanced_monitoring_forwarder` to support changes in v3.28.0 release
1 parent aec2da4 commit d2688cb

File tree

8 files changed

+19
-52
lines changed

8 files changed

+19
-52
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# Local .terraform directories
22
**/.terraform/*
33

4+
# Terraform lockfile
5+
.terraform.lock.hcl
6+
47
# .tfstate files
58
*.tfstate
69
*.tfstate.*

examples/complete/main.tf

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@ module "default" {
147147
create_rds_em_forwarder = true
148148
create_vpc_fl_forwarder = true
149149

150-
log_forwarder_version = "3.20.0"
151150
log_forwarder_name = "complete-datadog-log-forwarder"
152151
log_forwarder_memory_size = 512
153152
log_forwarder_timeout = 60
@@ -180,7 +179,6 @@ module "default" {
180179
log_forwarder_s3_log_bucket_arns = [module.log_bucket_1.this_s3_bucket_arn, module.log_bucket_2.this_s3_bucket_arn]
181180
log_forwarder_tags = { LogForwarder = true }
182181

183-
rds_em_forwarder_version = "3.19.0"
184182
rds_em_forwarder_name = "complete-datadog-rds-forwarder"
185183
rds_em_forwarder_memory_size = 512
186184
rds_em_forwarder_timeout = 60
@@ -200,7 +198,6 @@ module "default" {
200198
rds_em_forwarder_policy_path = "/datadog/"
201199
rds_em_forwarder_tags = { RdsForwarder = true }
202200

203-
vpc_fl_forwarder_version = "3.18.0"
204201
vpc_fl_forwarder_name = "complete-datadog-vpc-forwarder"
205202
vpc_fl_forwarder_memory_size = 512
206203
vpc_fl_forwarder_timeout = 60

main.tf

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,9 @@ module "rds_enhanced_monitoring_forwarder" {
6161
create = var.create_rds_em_forwarder
6262

6363
forwarder_version = var.rds_em_forwarder_version
64+
dd_api_key = var.dd_api_key
6465
dd_api_key_secret_arn = var.dd_api_key_secret_arn
65-
dd_app_key = var.dd_app_key
6666
dd_site = var.dd_site
67-
kms_alias = var.kms_alias
6867

6968
name = var.rds_em_forwarder_name
7069
runtime = var.rds_em_forwarder_runtime

modules/log_forwarder/main.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ locals {
1616
}
1717

1818
data "aws_caller_identity" "current" {}
19-
2019
data "aws_region" "current" {}
2120

2221
################################################################################

modules/rds_enhanced_monitoring_forwarder/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,11 @@ module "datadog_rds_enhanced_monitoring_forwarder" {
4949
| Name | Description | Type | Default | Required |
5050
|------|-------------|------|---------|:--------:|
5151
| create | Controls whether the forwarder resources should be created | `bool` | `true` | no |
52+
| dd\_api\_key | The Datadog API key, which can be found from the APIs page (/account/settings#api). It will be stored in AWS Secrets Manager securely | `string` | `""` | no |
5253
| dd\_api\_key\_secret\_arn | The ARN of the Secrets Manager secret storing the Datadog API key, if you already have it stored in Secrets Manager | `string` | `""` | no |
53-
| dd\_app\_key | The Datadog application key associated with the user account that created it, which can be found from the APIs page | `string` | `""` | no |
5454
| dd\_site | Define your Datadog Site to send data to. For the Datadog EU site, set to datadoghq.eu | `string` | `"datadoghq.com"` | no |
5555
| environment\_variables | A map of environment variables for the forwarder lambda function | `map(string)` | `{}` | no |
5656
| forwarder\_version | Forwarder version - see https://github.com/DataDog/datadog-serverless-functions/releases | `string` | `"3.28.0"` | no |
57-
| kms\_alias | Alias of KMS key used to encrypt the Datadog API keys - must start with `alias/` | `string` | n/a | yes |
5857
| 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 |
5958
| lambda\_tags | A map of tags to apply to the forwarder lambda function | `map(string)` | `{}` | no |
6059
| layers | List of Lambda Layer Version ARNs (maximum of 5) to attach to the forwarder lambda | `list(string)` | `[]` | no |

modules/rds_enhanced_monitoring_forwarder/main.tf

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
locals {
2+
dd_api_key = var.dd_api_key != "" ? { DD_API_KEY = var.dd_api_key } : {}
3+
dd_api_key_secret_arn = var.dd_api_key_secret_arn != "" ? { DD_API_KEY_SECRET_ARN = var.dd_api_key_secret_arn } : {}
4+
25
description = "Lambda function to push RDS Enhanced metrics to Datadog"
36
version_tag = { DD_FORWARDER_VERSION = var.forwarder_version }
47

58
role_name = coalesce(var.role_name, var.name)
69
policy_name = coalesce(var.policy_name, var.name)
7-
8-
dd_api_key = try(data.aws_secretsmanager_secret_version.datadog_api_key[0].secret_string, "")
9-
api_app_key = <<EOF
10-
{"api_key":"${local.dd_api_key}", "app_key":"${var.dd_app_key}"}
11-
EOF
12-
13-
api_key = <<EOF
14-
{"api_key":"${local.dd_api_key}"}
15-
EOF
1610
}
1711

1812
data "aws_caller_identity" "current" {}
@@ -62,8 +56,8 @@ resource "aws_iam_policy" "this" {
6256
policy = templatefile(
6357
"${path.module}/policy.tmpl",
6458
{
65-
vpc_check = var.subnet_ids != null
66-
kms_arn = data.aws_kms_key.this[0].arn
59+
vpc_check = var.subnet_ids != null
60+
dd_api_key_secret_arn = var.dd_api_key_secret_arn
6761
}
6862
)
6963
}
@@ -107,9 +101,10 @@ resource "aws_lambda_function" "this" {
107101

108102
environment {
109103
variables = merge(
104+
local.dd_api_key,
105+
local.dd_api_key_secret_arn,
110106
{
111-
DD_SITE = var.dd_site
112-
kmsEncryptedKeys = aws_kms_ciphertext.this[0].ciphertext_blob
107+
DD_SITE = var.dd_site
113108
},
114109
var.environment_variables,
115110
local.version_tag
@@ -137,23 +132,3 @@ resource "aws_cloudwatch_log_group" "this" {
137132

138133
tags = var.tags
139134
}
140-
141-
data "aws_kms_key" "this" {
142-
count = var.create ? 1 : 0
143-
144-
key_id = var.kms_alias
145-
}
146-
147-
data "aws_secretsmanager_secret_version" "datadog_api_key" {
148-
count = var.create ? 1 : 0
149-
150-
secret_id = var.dd_api_key_secret_arn
151-
}
152-
153-
resource "aws_kms_ciphertext" "this" {
154-
count = var.create ? 1 : 0
155-
156-
key_id = data.aws_kms_key.this[0].id
157-
plaintext = var.dd_app_key != "" ? local.api_app_key : local.api_key
158-
context = { LambdaFunctionName = var.name }
159-
}

modules/rds_enhanced_monitoring_forwarder/policy.tmpl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
"Effect": "Allow",
1313
"Resource": "*",
1414
"Sid": "WriteLogs"
15-
}%{ if kms_arn != "" },
15+
}%{ if dd_api_key_secret_arn != "" },
1616
{
17-
"Action": "kms:Decrypt",
17+
"Action": "secretsmanager:GetSecretValue",
1818
"Effect": "Allow",
19-
"Resource": "${kms_arn}",
20-
"Sid": "DecryptKeys"
19+
"Resource": "${dd_api_key_secret_arn}",
20+
"Sid": "GetApiKeySecret"
2121
}%{ endif }
2222
]
2323
}

modules/rds_enhanced_monitoring_forwarder/variables.tf

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ variable "tags" {
1111
}
1212

1313
# Datadog environment Variables
14-
variable "dd_app_key" {
15-
description = "The Datadog application key associated with the user account that created it, which can be found from the APIs page"
14+
variable "dd_api_key" {
15+
description = "The Datadog API key, which can be found from the APIs page (/account/settings#api). It will be stored in AWS Secrets Manager securely"
1616
type = string
1717
default = ""
1818
}
@@ -29,11 +29,6 @@ variable "dd_site" {
2929
default = "datadoghq.com"
3030
}
3131

32-
variable "kms_alias" {
33-
description = "Alias of KMS key used to encrypt the Datadog API keys - must start with `alias/`"
34-
type = string
35-
}
36-
3732
# Forwarder IAM Role
3833
variable "role_arn" {
3934
description = "IAM role arn for forwarder lambda function to utilize"

0 commit comments

Comments
 (0)