Skip to content

Commit 739ec37

Browse files
authored
Merge pull request #34 from SumoLogic/sumo_251869
Added support for AWS tag filters
2 parents 4b9ce48 + d13bf0f commit 739ec37

File tree

6 files changed

+72
-6
lines changed

6 files changed

+72
-6
lines changed

aws/cloudwatchmetrics/cloudwatchmetrics.tf

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ resource "aws_iam_role" "source_iam_role" {
1919
ENVIRONMENT = data.sumologic_caller_identity.current.environment,
2020
SUMO_LOGIC_ORG_ID = var.sumologic_organization_id
2121
})
22-
23-
managed_policy_arns = [aws_iam_policy.iam_policy["iam_policy"].arn]
2422
}
2523

2624
resource "aws_iam_policy" "iam_policy" {
@@ -30,6 +28,14 @@ resource "aws_iam_policy" "iam_policy" {
3028
policy = templatefile("${path.module}/templates/sumologic_source_policy.tmpl", {})
3129
}
3230

31+
resource "aws_iam_role_policy_attachment" "policy_attachment" {
32+
depends_on = [aws_iam_policy.iam_policy]
33+
for_each = toset(var.source_details.iam_details.create_iam_role ? ["source_iam_role"] : [])
34+
35+
role = aws_iam_role.source_iam_role[each.key].name
36+
policy_arn = aws_iam_policy.iam_policy["iam_policy"].arn
37+
}
38+
3339
resource "sumologic_collector" "collector" {
3440
for_each = toset(var.create_collector ? ["collector"] : [])
3541
name = local.collector_name
@@ -64,6 +70,14 @@ resource "sumologic_cloudwatch_source" "cloudwatch_metrics_sources" {
6470
type = "CloudWatchPath"
6571
limit_to_regions = var.source_details.limit_to_regions
6672
limit_to_namespaces = var.source_details.limit_to_namespaces
73+
74+
dynamic "tag_filters" {
75+
for_each = var.source_details.tag_filters
76+
content {
77+
type = tag_filters.value.type
78+
namespace = tag_filters.value.namespace
79+
tags = tag_filters.value.tags
80+
}
81+
}
6782
}
6883
}
69-

aws/cloudwatchmetrics/examples/default/main.tf

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,20 @@ module "cloudwatch_metrics" {
1212
"create_iam_role": true,
1313
"iam_role_arn": null
1414
},
15-
"limit_to_namespaces": ["aws/ec2"],
15+
"limit_to_namespaces": ["AWS/EC2", "AWS/ApiGateway", "AWS/ApplicationELB"],
16+
"tag_filters": [{
17+
"type" = "TagFilters"
18+
"namespace" = "AWS/EC2"
19+
"tags" = ["env=prod;dev"]
20+
},{
21+
"type" = "TagFilters"
22+
"namespace" = "AWS/ApiGateway"
23+
"tags" = ["env=prod;dev"]
24+
},{
25+
"type" = "TagFilters"
26+
"namespace" = "AWS/ApplicationELB"
27+
"tags" = ["env=dev"]
28+
}],
1629
"limit_to_regions": ["eu-central-1"],
1730
"paused": false,
1831
"scan_interval": 300000,

aws/cloudwatchmetrics/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ variable "source_details" {
2525
description = string
2626
limit_to_regions = list(string)
2727
limit_to_namespaces = list(string)
28+
tag_filters = list(object({
29+
type = string
30+
namespace = string
31+
tags = list(string)
32+
}))
2833
paused = bool
2934
scan_interval = number
3035
sumo_account_id = number
@@ -42,6 +47,7 @@ variable "source_details" {
4247
collector_id = ""
4348
limit_to_regions = ["us-east-1"]
4449
limit_to_namespaces = ["AWS/ApplicationELB","AWS/ApiGateway","AWS/DynamoDB","AWS/Lambda","AWS/RDS","AWS/ECS","AWS/ElastiCache","AWS/ELB","AWS/NetworkELB","AWS/SQS","AWS/SNS"]
50+
tag_filters = []
4551
scan_interval = 300000
4652
paused = false
4753
sumo_account_id = 926226587429

aws/kinesisfirehoseformetrics/examples/default/main.tf

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,19 @@ module "kinesis_firehose_for_metrics_source_module" {
1717
description = "This source is created using Sumo Logic terraform AWS Observability module to collect AWS Cloud Watch metrics."
1818
collector_id = null
1919
limit_to_namespaces = []
20+
"tag_filters": [{
21+
"type" = "TagFilters"
22+
"namespace" = "AWS/EC2"
23+
"tags" = ["env=prod;dev"]
24+
},{
25+
"type" = "TagFilters"
26+
"namespace" = "AWS/ApiGateway"
27+
"tags" = ["env=prod;dev"]
28+
},{
29+
"type" = "TagFilters"
30+
"namespace" = "AWS/ApplicationELB"
31+
"tags" = ["env=dev"]
32+
}],
2033
sumo_account_id = 926226587429
2134
fields = {}
2235
iam_details = {

aws/kinesisfirehoseformetrics/kinesisfirehoseformetrics.tf

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,6 @@ resource "aws_iam_role" "source_iam_role" {
164164
SUMO_LOGIC_ORG_ID = var.sumologic_organization_id,
165165
ARN = local.arn_map[local.aws_region]
166166
})
167-
168-
managed_policy_arns = [aws_iam_policy.iam_policy["iam_policy"].arn]
169167
}
170168

171169
resource "aws_iam_policy" "iam_policy" {
@@ -175,6 +173,14 @@ resource "aws_iam_policy" "iam_policy" {
175173
policy = templatefile("${path.module}/templates/sumologic_source_policy.tmpl", {})
176174
}
177175

176+
resource "aws_iam_role_policy_attachment" "policy_attachment" {
177+
depends_on = [aws_iam_policy.iam_policy]
178+
for_each = toset(var.source_details.iam_details.create_iam_role ? ["source_iam_role"] : [])
179+
180+
role = aws_iam_role.source_iam_role[each.key].name
181+
policy_arn = aws_iam_policy.iam_policy["iam_policy"].arn
182+
}
183+
178184
resource "sumologic_collector" "collector" {
179185
for_each = toset(var.create_collector ? ["collector"] : [])
180186
name = local.collector_name
@@ -205,5 +211,13 @@ resource "sumologic_kinesis_metrics_source" "source" {
205211

206212
path {
207213
type = "KinesisMetricPath"
214+
dynamic "tag_filters" {
215+
for_each = var.source_details.tag_filters
216+
content {
217+
type = tag_filters.value.type
218+
namespace = tag_filters.value.namespace
219+
tags = tag_filters.value.tags
220+
}
221+
}
208222
}
209223
}

aws/kinesisfirehoseformetrics/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ variable "source_details" {
4343
description = string
4444
sumo_account_id = number
4545
limit_to_namespaces = list(string)
46+
tag_filters = list(object({
47+
type = string
48+
namespace = string
49+
tags = list(string)
50+
}))
4651
fields = map(string)
4752
iam_details = object({
4853
create_iam_role = bool
@@ -57,6 +62,7 @@ variable "source_details" {
5762
description = "This source is created using Sumo Logic terraform AWS Kinesis Firehose for metrics module to collect AWS Cloudwatch metrics."
5863
sumo_account_id = 926226587429
5964
limit_to_namespaces = []
65+
tag_filters = []
6066
fields = {}
6167
iam_details = {
6268
create_iam_role = true

0 commit comments

Comments
 (0)