Skip to content

Commit 079221d

Browse files
add vpc flow logs, cache logs, and update ecs logs
1 parent bb29a7b commit 079221d

File tree

7 files changed

+94
-4
lines changed

7 files changed

+94
-4
lines changed

infrastructure/modules/cache/main.tf

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,18 @@ locals {
1919
redis_major_version = split(".", var.redis_engine_version)[0]
2020
}
2121

22+
resource "aws_cloudwatch_log_group" "engine_log" {
23+
name = "/aws/elasticache/${var.project_name}-${var.environment}-cache-engine-log"
24+
retention_in_days = var.log_retention_in_days
25+
tags = var.common_tags
26+
}
27+
28+
resource "aws_cloudwatch_log_group" "slow_log" {
29+
name = "/aws/elasticache/${var.project_name}-${var.environment}-cache-slow-log"
30+
retention_in_days = var.log_retention_in_days
31+
tags = var.common_tags
32+
}
33+
2234
resource "aws_elasticache_subnet_group" "main" {
2335
name = "${var.project_name}-${var.environment}-cache-subnet-group"
2436
subnet_ids = var.subnet_ids
@@ -53,8 +65,20 @@ resource "aws_elasticache_replication_group" "main" {
5365
snapshot_retention_limit = var.snapshot_retention_limit
5466
snapshot_window = var.snapshot_window
5567
subnet_group_name = aws_elasticache_subnet_group.main.name
68+
transit_encryption_enabled = true
69+
log_delivery_configuration {
70+
destination = aws_cloudwatch_log_group.engine_log.name
71+
destination_type = "cloudwatch-logs"
72+
log_format = "json"
73+
log_type = "engine-log"
74+
}
75+
log_delivery_configuration {
76+
destination = aws_cloudwatch_log_group.slow_log.name
77+
destination_type = "cloudwatch-logs"
78+
log_format = "json"
79+
log_type = "slow-log"
80+
}
5681
tags = merge(var.common_tags, {
5782
Name = "${var.project_name}-${var.environment}-redis"
5883
})
59-
transit_encryption_enabled = true
6084
}

infrastructure/modules/cache/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ variable "environment" {
1515
type = string
1616
}
1717

18+
variable "log_retention_in_days" {
19+
description = "The number of days to retain log events."
20+
type = number
21+
default = 90
22+
}
23+
1824
variable "maintenance_window" {
1925
description = "The weekly time range for when maintenance on the cache cluster is performed."
2026
type = string

infrastructure/modules/ecs/modules/task/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ terraform {
1010
}
1111

1212
resource "aws_cloudwatch_log_group" "task" {
13-
name = "/ecs/${var.project_name}-${var.environment}-${var.task_name}"
13+
name = "/aws/ecs/${var.project_name}-${var.environment}-${var.task_name}"
1414
retention_in_days = var.log_retention_in_days
1515
tags = merge(var.common_tags, {
1616
Name = "${var.project_name}-${var.environment}-${var.task_name}-logs"

infrastructure/modules/ecs/modules/task/variables.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ variable "image_url" {
5454
variable "log_retention_in_days" {
5555
description = "The number of days to retain log events."
5656
type = number
57-
default = 30
57+
default = 90
5858
}
5959

6060
variable "memory" {

infrastructure/modules/networking/main.tf

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,27 @@ terraform {
1313
}
1414
}
1515

16+
data "aws_iam_policy_document" "flow_logs_assume_role" {
17+
statement {
18+
actions = ["sts:AssumeRole"]
19+
principals {
20+
type = "Service"
21+
identifiers = ["vpc-flow-logs.amazonaws.com"]
22+
}
23+
}
24+
}
25+
26+
data "aws_iam_policy_document" "flow_logs_policy" {
27+
statement {
28+
actions = [
29+
"logs:CreateLogStream",
30+
"logs:PutLogEvents",
31+
"logs:DescribeLogStreams",
32+
]
33+
resources = ["${aws_cloudwatch_log_group.flow_logs.arn}:*"]
34+
}
35+
}
36+
1637
resource "aws_vpc" "main" {
1738
cidr_block = var.vpc_cidr
1839
enable_dns_hostnames = true
@@ -22,6 +43,39 @@ resource "aws_vpc" "main" {
2243
})
2344
}
2445

46+
resource "aws_cloudwatch_log_group" "flow_logs" {
47+
name = "/aws/vpc-flow-logs/${var.project_name}-${var.environment}"
48+
retention_in_days = var.log_retention_in_days
49+
tags = var.common_tags
50+
}
51+
52+
resource "aws_flow_log" "main" {
53+
iam_role_arn = aws_iam_role.flow_logs.arn
54+
log_destination = aws_cloudwatch_log_group.flow_logs.arn
55+
traffic_type = "ALL"
56+
vpc_id = aws_vpc.main.id
57+
tags = merge(var.common_tags, {
58+
Name = "${var.project_name}-${var.environment}-vpc-flow-log"
59+
})
60+
}
61+
62+
resource "aws_iam_policy" "flow_logs" {
63+
name = "${var.project_name}-${var.environment}-flow-logs-policy"
64+
policy = data.aws_iam_policy_document.flow_logs_policy.json
65+
tags = var.common_tags
66+
}
67+
68+
resource "aws_iam_role" "flow_logs" {
69+
name = "${var.project_name}-${var.environment}-flow-logs-role"
70+
assume_role_policy = data.aws_iam_policy_document.flow_logs_assume_role.json
71+
tags = var.common_tags
72+
}
73+
74+
resource "aws_iam_role_policy_attachment" "flow_logs" {
75+
role = aws_iam_role.flow_logs.name
76+
policy_arn = aws_iam_policy.flow_logs.arn
77+
}
78+
2579
resource "aws_internet_gateway" "main" {
2680
tags = merge(var.common_tags, {
2781
Name = "${var.project_name}-${var.environment}-igw"

infrastructure/modules/networking/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ variable "environment" {
1414
type = string
1515
}
1616

17+
variable "log_retention_in_days" {
18+
description = "The number of days to retain log events."
19+
type = number
20+
default = 90
21+
}
22+
1723
variable "private_subnet_cidrs" {
1824
description = "A list of CIDR blocks for the private subnets"
1925
type = list(string)

infrastructure/modules/storage/modules/s3-bucket/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ data "aws_iam_policy_document" "this" {
3535
}
3636
}
3737

38-
resource "aws_s3_bucket" "this" {
38+
resource "aws_s3_bucket" "this" { #NOSONAR
3939
bucket = var.bucket_name
4040
force_destroy = var.force_destroy
4141
tags = var.tags

0 commit comments

Comments
 (0)