Skip to content

Commit 588fbe9

Browse files
feat!: Bump Terraform and AWS provider MSV to 1.3 and 5.0 respectively, add latest releases and set 3.103.0 as the default version (#36)
Co-authored-by: Bryant Biggs <[email protected]>
1 parent c828616 commit 588fbe9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+127
-149
lines changed

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/antonbabenko/pre-commit-terraform
3-
rev: v1.77.1
3+
rev: v1.88.0
44
hooks:
55
- id: terraform_fmt
66
- id: terraform_validate
@@ -23,7 +23,7 @@ repos:
2323
- '--args=--only=terraform_standard_module_structure'
2424
- '--args=--only=terraform_workspace_remote'
2525
- repo: https://github.com/pre-commit/pre-commit-hooks
26-
rev: v4.4.0
26+
rev: v4.5.0
2727
hooks:
2828
- id: check-merge-conflict
2929
- id: end-of-file-fixer

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,14 @@ Examples codified under the [`examples`](https://github.com/terraform-aws-module
6565

6666
| Name | Version |
6767
|------|---------|
68-
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.13.1 |
69-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.9 |
68+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.3 |
69+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 |
7070

7171
## Providers
7272

7373
| Name | Version |
7474
|------|---------|
75-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.9 |
75+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 |
7676

7777
## Modules
7878

@@ -164,7 +164,7 @@ Examples codified under the [`examples`](https://github.com/terraform-aws-module
164164
| <a name="input_log_forwarder_timeout"></a> [log\_forwarder\_timeout](#input\_log\_forwarder\_timeout) | The amount of time the log forwarder lambda has to execute in seconds | `number` | `120` | no |
165165
| <a name="input_log_forwarder_use_policy_name_prefix"></a> [log\_forwarder\_use\_policy\_name\_prefix](#input\_log\_forwarder\_use\_policy\_name\_prefix) | Whether to use unique name beginning with the specified `policy_name` for the log forwarder policy | `bool` | `false` | no |
166166
| <a name="input_log_forwarder_use_role_name_prefix"></a> [log\_forwarder\_use\_role\_name\_prefix](#input\_log\_forwarder\_use\_role\_name\_prefix) | Whether to use unique name beginning with the specified `role_name` for the log forwarder role | `bool` | `false` | no |
167-
| <a name="input_log_forwarder_version"></a> [log\_forwarder\_version](#input\_log\_forwarder\_version) | Forwarder version - see https://github.com/DataDog/datadog-serverless-functions/releases | `string` | `"3.73.0"` | no |
167+
| <a name="input_log_forwarder_version"></a> [log\_forwarder\_version](#input\_log\_forwarder\_version) | Forwarder version - see https://github.com/DataDog/datadog-serverless-functions/releases | `string` | `"3.103.0"` | no |
168168
| <a name="input_log_forwarder_vpce_policy"></a> [log\_forwarder\_vpce\_policy](#input\_log\_forwarder\_vpce\_policy) | Policy to attach to the log forwarder endpoint that controls access to the service. Defaults to full access | `any` | `null` | no |
169169
| <a name="input_log_forwarder_vpce_security_group_ids"></a> [log\_forwarder\_vpce\_security\_group\_ids](#input\_log\_forwarder\_vpce\_security\_group\_ids) | IDs of security groups to attach to log forwarder endpoint | `list(string)` | `[]` | no |
170170
| <a name="input_log_forwarder_vpce_subnet_ids"></a> [log\_forwarder\_vpce\_subnet\_ids](#input\_log\_forwarder\_vpce\_subnet\_ids) | IDs of subnets to associate with log forwarder endpoint | `list(string)` | `[]` | no |
@@ -204,7 +204,7 @@ Examples codified under the [`examples`](https://github.com/terraform-aws-module
204204
| <a name="input_rds_em_forwarder_timeout"></a> [rds\_em\_forwarder\_timeout](#input\_rds\_em\_forwarder\_timeout) | The amount of time the RDS enhanced monitoring forwarder lambda has to execute in seconds | `number` | `10` | no |
205205
| <a name="input_rds_em_forwarder_use_policy_name_prefix"></a> [rds\_em\_forwarder\_use\_policy\_name\_prefix](#input\_rds\_em\_forwarder\_use\_policy\_name\_prefix) | Whether to use unique name beginning with the specified `rds_em_forwarder_policy_name` for the RDS enhanced monitoring forwarder role | `bool` | `false` | no |
206206
| <a name="input_rds_em_forwarder_use_role_name_prefix"></a> [rds\_em\_forwarder\_use\_role\_name\_prefix](#input\_rds\_em\_forwarder\_use\_role\_name\_prefix) | Whether to use unique name beginning with the specified `rds_em_forwarder_role_name` for the RDS enhanced monitoring forwarder role | `bool` | `false` | no |
207-
| <a name="input_rds_em_forwarder_version"></a> [rds\_em\_forwarder\_version](#input\_rds\_em\_forwarder\_version) | RDS enhanced monitoring lambda version - see https://github.com/DataDog/datadog-serverless-functions/releases | `string` | `"3.73.0"` | no |
207+
| <a name="input_rds_em_forwarder_version"></a> [rds\_em\_forwarder\_version](#input\_rds\_em\_forwarder\_version) | RDS enhanced monitoring lambda version - see https://github.com/DataDog/datadog-serverless-functions/releases | `string` | `"3.103.0"` | no |
208208
| <a name="input_tags"></a> [tags](#input\_tags) | A map of tags to use on all resources | `map(string)` | `{}` | no |
209209
| <a name="input_traces_vpce_policy"></a> [traces\_vpce\_policy](#input\_traces\_vpce\_policy) | Policy to attach to the traces endpoint that controls access to the service. Defaults to full access | `any` | `null` | no |
210210
| <a name="input_traces_vpce_security_group_ids"></a> [traces\_vpce\_security\_group\_ids](#input\_traces\_vpce\_security\_group\_ids) | IDs of security groups to attach to traces endpoint | `list(string)` | `[]` | no |
@@ -239,7 +239,7 @@ Examples codified under the [`examples`](https://github.com/terraform-aws-module
239239
| <a name="input_vpc_fl_forwarder_timeout"></a> [vpc\_fl\_forwarder\_timeout](#input\_vpc\_fl\_forwarder\_timeout) | The amount of time the VPC flow log forwarder lambda has to execute in seconds | `number` | `10` | no |
240240
| <a name="input_vpc_fl_forwarder_use_policy_name_prefix"></a> [vpc\_fl\_forwarder\_use\_policy\_name\_prefix](#input\_vpc\_fl\_forwarder\_use\_policy\_name\_prefix) | Whether to use unique name beginning with the specified `vpc_fl_forwarder_policy_name` for the VPC flow log forwarder role | `bool` | `false` | no |
241241
| <a name="input_vpc_fl_forwarder_use_role_name_prefix"></a> [vpc\_fl\_forwarder\_use\_role\_name\_prefix](#input\_vpc\_fl\_forwarder\_use\_role\_name\_prefix) | Whether to use unique name beginning with the specified `vpc_fl_forwarder_role_name` for the VPC flow log forwarder role | `bool` | `false` | no |
242-
| <a name="input_vpc_fl_forwarder_version"></a> [vpc\_fl\_forwarder\_version](#input\_vpc\_fl\_forwarder\_version) | VPC flow log lambda version - see https://github.com/DataDog/datadog-serverless-functions/releases | `string` | `"3.73.0"` | no |
242+
| <a name="input_vpc_fl_forwarder_version"></a> [vpc\_fl\_forwarder\_version](#input\_vpc\_fl\_forwarder\_version) | VPC flow log lambda version - see https://github.com/DataDog/datadog-serverless-functions/releases | `string` | `"3.103.0"` | no |
243243
| <a name="input_vpc_id"></a> [vpc\_id](#input\_vpc\_id) | ID of VPC to provision endpoints within | `string` | `null` | no |
244244

245245
## Outputs

examples/complete/README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,27 @@ Note that this example may create resources which will incur monetary charges on
2323

2424
| Name | Version |
2525
|------|---------|
26-
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.13.1 |
27-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.9 |
26+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.3 |
27+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 |
2828
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 2.0 |
2929

3030
## Providers
3131

3232
| Name | Version |
3333
|------|---------|
34-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.9 |
34+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 |
3535
| <a name="provider_random"></a> [random](#provider\_random) | >= 2.0 |
3636

3737
## Modules
3838

3939
| Name | Source | Version |
4040
|------|--------|---------|
4141
| <a name="module_default"></a> [default](#module\_default) | ../../ | n/a |
42-
| <a name="module_log_bucket_1"></a> [log\_bucket\_1](#module\_log\_bucket\_1) | terraform-aws-modules/s3-bucket/aws | ~> 3.0 |
43-
| <a name="module_log_bucket_2"></a> [log\_bucket\_2](#module\_log\_bucket\_2) | terraform-aws-modules/s3-bucket/aws | ~> 3.0 |
44-
| <a name="module_security_group"></a> [security\_group](#module\_security\_group) | terraform-aws-modules/security-group/aws | ~> 4.0 |
45-
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 3.0 |
46-
| <a name="module_vpc_endpoints"></a> [vpc\_endpoints](#module\_vpc\_endpoints) | terraform-aws-modules/vpc/aws//modules/vpc-endpoints | ~> 3.0 |
42+
| <a name="module_log_bucket_1"></a> [log\_bucket\_1](#module\_log\_bucket\_1) | terraform-aws-modules/s3-bucket/aws | ~> 4.0 |
43+
| <a name="module_log_bucket_2"></a> [log\_bucket\_2](#module\_log\_bucket\_2) | terraform-aws-modules/s3-bucket/aws | ~> 4.0 |
44+
| <a name="module_security_group"></a> [security\_group](#module\_security\_group) | terraform-aws-modules/security-group/aws | ~> 5.0 |
45+
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 5.0 |
46+
| <a name="module_vpc_endpoints"></a> [vpc\_endpoints](#module\_vpc\_endpoints) | terraform-aws-modules/vpc/aws//modules/vpc-endpoints | ~> 5.0 |
4747

4848
## Resources
4949

@@ -53,6 +53,7 @@ Note that this example may create resources which will incur monetary charges on
5353
| [aws_kms_alias.datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_alias) | resource |
5454
| [aws_kms_key.datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_key) | resource |
5555
| [random_pet.this](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet) | resource |
56+
| [aws_availability_zones.available](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/availability_zones) | data source |
5657
| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
5758
| [aws_iam_policy_document.custom](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
5859
| [aws_iam_policy_document.datadog_cmk](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |

examples/complete/main.tf

Lines changed: 72 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,20 @@ provider "aws" {
22
region = local.region
33
}
44

5+
data "aws_caller_identity" "current" {}
6+
data "aws_availability_zones" "available" {}
7+
58
locals {
69
region = "us-east-1"
7-
name = "datadog-fwd-ex-${replace(basename(path.cwd), "_", "-")}"
10+
name = "datadog-fwd-ex-${basename(path.cwd)}"
11+
12+
vpc_cidr = "10.0.0.0/16"
13+
azs = slice(data.aws_availability_zones.available.names, 0, 3)
814

915
tags = {
10-
Name = local.name
1116
Example = local.name
12-
Repository = "https://github.com/terraform-aws-modules/terraform-aws-datadog-forwarders"
17+
GithubRepo = "terraform-aws-datadog-forwarders"
18+
GithubOrg = "terraform-aws-modules"
1319
}
1420
}
1521

@@ -19,61 +25,10 @@ data "aws_secretsmanager_secret" "datadog_api_key" {
1925
name = "datadog/api_key"
2026
}
2127

22-
data "aws_caller_identity" "current" {}
23-
2428
################################################################################
2529
# Module
2630
################################################################################
2731

28-
data "aws_iam_policy_document" "custom" {
29-
statement {
30-
sid = "AnyResourceAccess"
31-
actions = [
32-
"logs:CreateLogGroup",
33-
"logs:CreateLogStream",
34-
"tag:GetResources",
35-
"logs:PutLogEvents",
36-
"ec2:CreateNetworkInterface",
37-
"ec2:DescribeNetworkInterfaces",
38-
"ec2:DeleteNetworkInterface"
39-
]
40-
resources = ["*"]
41-
}
42-
43-
statement {
44-
sid = "DatadogBucketFullAccess"
45-
actions = [
46-
"s3:GetObject",
47-
"s3:PutObject",
48-
"s3:DeleteObject",
49-
"s3:ListBucket",
50-
]
51-
resources = [
52-
module.log_bucket_1.s3_bucket_arn,
53-
"${module.log_bucket_1.s3_bucket_arn}/*"
54-
]
55-
}
56-
57-
statement {
58-
sid = "GetApiKeySecret"
59-
actions = [
60-
"secretsmanager:GetSecretValue",
61-
]
62-
resources = [
63-
data.aws_secretsmanager_secret.datadog_api_key.arn
64-
]
65-
}
66-
}
67-
68-
resource "aws_iam_policy" "custom" {
69-
name = "custom-datadog-log-forwarder"
70-
path = "/"
71-
description = "Lambda function to push logs, metrics, and traces to Datadog"
72-
policy = data.aws_iam_policy_document.custom.json
73-
74-
tags = local.tags
75-
}
76-
7732
module "default" {
7833
source = "../../"
7934

@@ -200,6 +155,55 @@ module "default" {
200155
# Supporting Resources
201156
################################################################################
202157

158+
data "aws_iam_policy_document" "custom" {
159+
statement {
160+
sid = "AnyResourceAccess"
161+
actions = [
162+
"logs:CreateLogGroup",
163+
"logs:CreateLogStream",
164+
"tag:GetResources",
165+
"logs:PutLogEvents",
166+
"ec2:CreateNetworkInterface",
167+
"ec2:DescribeNetworkInterfaces",
168+
"ec2:DeleteNetworkInterface"
169+
]
170+
resources = ["*"]
171+
}
172+
173+
statement {
174+
sid = "DatadogBucketFullAccess"
175+
actions = [
176+
"s3:GetObject",
177+
"s3:PutObject",
178+
"s3:DeleteObject",
179+
"s3:ListBucket",
180+
]
181+
resources = [
182+
module.log_bucket_1.s3_bucket_arn,
183+
"${module.log_bucket_1.s3_bucket_arn}/*"
184+
]
185+
}
186+
187+
statement {
188+
sid = "GetApiKeySecret"
189+
actions = [
190+
"secretsmanager:GetSecretValue",
191+
]
192+
resources = [
193+
data.aws_secretsmanager_secret.datadog_api_key.arn
194+
]
195+
}
196+
}
197+
198+
resource "aws_iam_policy" "custom" {
199+
name = "custom-datadog-log-forwarder"
200+
path = "/"
201+
description = "Lambda function to push logs, metrics, and traces to Datadog"
202+
policy = data.aws_iam_policy_document.custom.json
203+
204+
tags = local.tags
205+
}
206+
203207
resource "random_pet" "this" {
204208
length = 2
205209
}
@@ -233,40 +237,23 @@ resource "aws_kms_alias" "datadog" {
233237

234238
module "vpc" {
235239
source = "terraform-aws-modules/vpc/aws"
236-
version = "~> 3.0"
240+
version = "~> 5.0"
237241

238242
name = local.name
239-
cidr = "10.0.0.0/16"
240-
241-
azs = ["us-east-1a", "us-east-1c", "us-east-1d"]
242-
private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
243-
public_subnets = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]
244-
245-
enable_nat_gateway = false # not required, using private VPC endpoint
246-
single_nat_gateway = true
247-
map_public_ip_on_launch = false
243+
cidr = local.vpc_cidr
248244

249-
manage_default_security_group = true
250-
default_security_group_ingress = []
251-
default_security_group_egress = []
245+
azs = local.azs
246+
private_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 4, k)]
247+
public_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k + 48)]
252248

253-
enable_flow_log = true
254-
flow_log_destination_type = "cloud-watch-logs"
255-
create_flow_log_cloudwatch_log_group = true
256-
create_flow_log_cloudwatch_iam_role = true
257-
flow_log_max_aggregation_interval = 60
258-
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}"
259-
260-
# Required for VPC Endpoints
261-
enable_dns_hostnames = true
262-
enable_dns_support = true
249+
enable_nat_gateway = false
263250

264251
tags = local.tags
265252
}
266253

267254
module "vpc_endpoints" {
268255
source = "terraform-aws-modules/vpc/aws//modules/vpc-endpoints"
269-
version = "~> 3.0"
256+
version = "~> 5.0"
270257

271258
vpc_id = module.vpc.vpc_id
272259
security_group_ids = [module.security_group.security_group_id]
@@ -287,7 +274,7 @@ module "vpc_endpoints" {
287274

288275
module "security_group" {
289276
source = "terraform-aws-modules/security-group/aws"
290-
version = "~> 4.0"
277+
version = "~> 5.0"
291278

292279
name = local.name
293280
description = "Example security group"
@@ -318,20 +305,15 @@ module "security_group" {
318305

319306
module "log_bucket_1" {
320307
source = "terraform-aws-modules/s3-bucket/aws"
321-
version = "~> 3.0"
308+
version = "~> 4.0"
322309

323-
bucket = "logs-1-${random_pet.this.id}"
310+
bucket_prefix = "logs-1-"
324311
force_destroy = true
325312

326-
acl = "log-delivery-write"
313+
control_object_ownership = true
327314
attach_elb_log_delivery_policy = true
328315
attach_deny_insecure_transport_policy = true
329316

330-
block_public_acls = true
331-
block_public_policy = true
332-
ignore_public_acls = true
333-
restrict_public_buckets = true
334-
335317
server_side_encryption_configuration = {
336318
rule = {
337319
apply_server_side_encryption_by_default = {
@@ -345,20 +327,15 @@ module "log_bucket_1" {
345327

346328
module "log_bucket_2" {
347329
source = "terraform-aws-modules/s3-bucket/aws"
348-
version = "~> 3.0"
330+
version = "~> 4.0"
349331

350-
bucket = "logs-2-${random_pet.this.id}"
332+
bucket_prefix = "logs-2-"
351333
force_destroy = true
352334

353-
acl = "log-delivery-write"
335+
control_object_ownership = true
354336
attach_elb_log_delivery_policy = true
355337
attach_deny_insecure_transport_policy = true
356338

357-
block_public_acls = true
358-
block_public_policy = true
359-
ignore_public_acls = true
360-
restrict_public_buckets = true
361-
362339
server_side_encryption_configuration = {
363340
rule = {
364341
apply_server_side_encryption_by_default = {

examples/complete/versions.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
terraform {
2-
required_version = ">= 0.13.1"
2+
required_version = ">= 1.3"
33

44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 4.9"
7+
version = ">= 5.0"
88
}
99
random = {
1010
source = "hashicorp/random"

examples/simple/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ Note that this example may create resources which will incur monetary charges on
1919

2020
| Name | Version |
2121
|------|---------|
22-
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.13.1 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.9 |
22+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.3 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 |
2424
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 2.0 |
2525

2626
## Providers
2727

2828
| Name | Version |
2929
|------|---------|
30-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.9 |
30+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 |
3131
| <a name="provider_random"></a> [random](#provider\_random) | >= 2.0 |
3232

3333
## Modules

0 commit comments

Comments
 (0)