@@ -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+
1637resource "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+
2579resource "aws_internet_gateway" "main" {
2680 tags = merge (var. common_tags , {
2781 Name = " ${ var . project_name } -${ var . environment } -igw"
0 commit comments