@@ -9,6 +9,11 @@ provider "aws" {
9
9
10
10
locals {
11
11
name = " datadog-forwarders-complete-example"
12
+
13
+ tags = {
14
+ Example = local.name
15
+ Environment = " dev"
16
+ }
12
17
}
13
18
14
19
# Note: you will need to create this secret manually prior to running
@@ -35,6 +40,8 @@ resource "aws_kms_key" "datadog" {
35
40
description = " Datadog KMS CMK"
36
41
enable_key_rotation = true
37
42
policy = data. aws_iam_policy_document . datadog_cmk . json
43
+
44
+ tags = local. tags
38
45
}
39
46
40
47
data "aws_iam_policy_document" "datadog_cmk" {
@@ -58,7 +65,7 @@ resource "aws_kms_alias" "datadog" {
58
65
59
66
module "vpc" {
60
67
source = " terraform-aws-modules/vpc/aws"
61
- version = " ~> 3.2 "
68
+ version = " ~> 3"
62
69
63
70
name = local. name
64
71
cidr = " 10.0.0.0/16"
@@ -67,12 +74,26 @@ module "vpc" {
67
74
private_subnets = [" 10.0.1.0/24" , " 10.0.2.0/24" , " 10.0.3.0/24" ]
68
75
public_subnets = [" 10.0.101.0/24" , " 10.0.102.0/24" , " 10.0.103.0/24" ]
69
76
70
- enable_nat_gateway = true
71
- single_nat_gateway = true
77
+ enable_nat_gateway = false # not required, using private VPC endpoint
78
+ single_nat_gateway = true
79
+ map_public_ip_on_launch = false
80
+
81
+ manage_default_security_group = true
82
+ default_security_group_ingress = []
83
+ default_security_group_egress = []
84
+
85
+ enable_flow_log = true
86
+ flow_log_destination_type = " cloud-watch-logs"
87
+ create_flow_log_cloudwatch_log_group = true
88
+ create_flow_log_cloudwatch_iam_role = true
89
+ flow_log_max_aggregation_interval = 60
90
+ flow_log_log_format = " $${version} $${account-id} $${interface-id} $${srcaddr} $${dstaddr} $${srcport} $${dstport} $${protocol} $${packets} $${bytes} $${start} $${end} $${action} $${log-status} $${vpc-id} $${subnet-id} $${instance-id} $${tcp-flags} $${type} $${pkt-srcaddr} $${pkt-dstaddr} $${region} $${az-id} $${sublocation-type} $${sublocation-id}"
72
91
73
92
# Required for VPC Endpoints
74
93
enable_dns_hostnames = true
75
94
enable_dns_support = true
95
+
96
+ tags = local. tags
76
97
}
77
98
78
99
module "vpc_endpoints" {
@@ -92,11 +113,13 @@ module "vpc_endpoints" {
92
113
subnet_ids = module.vpc.private_subnets
93
114
},
94
115
}
116
+
117
+ tags = local. tags
95
118
}
96
119
97
120
module "security_group" {
98
121
source = " terraform-aws-modules/security-group/aws"
99
- version = " ~> 4.3 "
122
+ version = " ~> 4"
100
123
101
124
name = local. name
102
125
description = " Example security group"
@@ -121,27 +144,62 @@ module "security_group" {
121
144
122
145
egress_cidr_blocks = [" 0.0.0.0/0" ]
123
146
egress_rules = [" all-all" ]
124
- }
125
147
148
+ tags = local. tags
149
+ }
126
150
127
151
module "log_bucket_1" {
128
152
source = " terraform-aws-modules/s3-bucket/aws"
129
- version = " ~> 2.6"
153
+ version = " ~> 2"
154
+
155
+ bucket = " logs-1-${ random_pet . this . id } "
156
+ force_destroy = true
130
157
131
- bucket = " logs-1-${ random_pet . this . id } "
132
- acl = " log-delivery-write"
133
- force_destroy = true
134
- attach_elb_log_delivery_policy = true
158
+ acl = " log-delivery-write"
159
+ attach_elb_log_delivery_policy = true
160
+ attach_deny_insecure_transport_policy = true
161
+
162
+ block_public_acls = true
163
+ block_public_policy = true
164
+ ignore_public_acls = true
165
+ restrict_public_buckets = true
166
+
167
+ server_side_encryption_configuration = {
168
+ rule = {
169
+ apply_server_side_encryption_by_default = {
170
+ sse_algorithm = " AES256"
171
+ }
172
+ }
173
+ }
174
+
175
+ tags = local. tags
135
176
}
136
177
137
178
module "log_bucket_2" {
138
179
source = " terraform-aws-modules/s3-bucket/aws"
139
- version = " ~> 2.6"
180
+ version = " ~> 2"
181
+
182
+ bucket = " logs-2-${ random_pet . this . id } "
183
+ force_destroy = true
184
+
185
+ acl = " log-delivery-write"
186
+ attach_elb_log_delivery_policy = true
187
+ attach_deny_insecure_transport_policy = true
188
+
189
+ block_public_acls = true
190
+ block_public_policy = true
191
+ ignore_public_acls = true
192
+ restrict_public_buckets = true
193
+
194
+ server_side_encryption_configuration = {
195
+ rule = {
196
+ apply_server_side_encryption_by_default = {
197
+ sse_algorithm = " AES256"
198
+ }
199
+ }
200
+ }
140
201
141
- bucket = " logs-2-${ random_pet . this . id } "
142
- acl = " log-delivery-write"
143
- force_destroy = true
144
- attach_elb_log_delivery_policy = true
202
+ tags = local. tags
145
203
}
146
204
147
205
# ###############################################################################
@@ -192,8 +250,9 @@ resource "aws_iam_policy" "custom" {
192
250
name = " custom-datadog-log-forwarder"
193
251
path = " /"
194
252
description = " Lambda function to push logs, metrics, and traces to Datadog"
253
+ policy = data. aws_iam_policy_document . custom . json
195
254
196
- policy = data . aws_iam_policy_document . custom . json
255
+ tags = local . tags
197
256
}
198
257
199
258
module "default" {
@@ -309,5 +368,5 @@ module "default" {
309
368
traces_vpce_security_group_ids = [module . security_group . security_group_id ]
310
369
traces_vpce_tags = { TracesVpcEndpoint = true }
311
370
312
- tags = { Environment = " test " }
371
+ tags = local . tags
313
372
}
0 commit comments