Skip to content

Commit 218c356

Browse files
committed
Move log permissions into separate submodule and use from root module.
1 parent 494d129 commit 218c356

File tree

8 files changed

+80
-49
lines changed

8 files changed

+80
-49
lines changed

modules/log_permissions/account.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
resource "aws_api_gateway_account" "api_gateway_account" {
2+
cloudwatch_role_arn = aws_iam_role.api_gateway_logging_role.arn
3+
}

modules/log_permissions/iam.tf

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
data "aws_iam_policy_document" "api_gateway_assume_role_policy" {
2+
statement {
3+
actions = ["sts:AssumeRole"]
4+
5+
principals {
6+
identifiers = [
7+
"apigateway.amazonaws.com"
8+
]
9+
type = "Service"
10+
}
11+
12+
effect = "Allow"
13+
}
14+
}
15+
16+
data "aws_iam_policy_document" "api_gateway_logging_policy" {
17+
statement {
18+
effect = "Allow"
19+
actions = [
20+
"logs:CreateLogGroup",
21+
"logs:CreateLogStream",
22+
"logs:DescribeLogGroups",
23+
"logs:DescribeLogStreams",
24+
"logs:PutLogEvents",
25+
"logs:GetLogEvents",
26+
"logs:FilterLogEvents"
27+
]
28+
resources = [
29+
"*"
30+
]
31+
}
32+
}
33+
34+
resource "aws_iam_role" "api_gateway_logging_role" {
35+
name = "api-gateway-logging-role"
36+
assume_role_policy = data.aws_iam_policy_document.api_gateway_assume_role_policy.json
37+
}
38+
39+
resource "aws_iam_role_policy" "api_gateway_logging_role_policy" {
40+
name = "api-gateway-logging-policy"
41+
role = aws_iam_role.api_gateway_logging_role.name
42+
policy = data.aws_iam_policy_document.api_gateway_logging_policy.json
43+
}

modules/log_permissions/outputs.tf

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
output "logging_role_id" {
2+
value = aws_iam_role.api_gateway_logging_role.id
3+
}
4+
5+
output "logging_role_arn" {
6+
value = aws_iam_role.api_gateway_logging_role.arn
7+
}
8+
9+
output "logging_role_name" {
10+
value = aws_iam_role.api_gateway_logging_role.name
11+
}
12+
13+
output "logging_role_policy_id" {
14+
value = aws_iam_role_policy.api_gateway_logging_role_policy.id
15+
}
16+
17+
output "logging_role_policy_name" {
18+
value = aws_iam_role_policy.api_gateway_logging_role_policy.name
19+
}

modules/log_permissions/terraform.tf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
terraform {
2+
required_version = ">= 1.0"
3+
4+
required_providers {
5+
aws = {
6+
source = "hashicorp/aws"
7+
version = ">= 4.0"
8+
}
9+
}
10+
}

modules/log_permissions/variables.tf

Whitespace-only changes.

modules/stage/log_group.tf

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,3 @@
11
resource "aws_cloudwatch_log_group" "access_logs" {
22
name = "/${var.component}/${var.deployment_identifier}/api-gateway/${local.sanitised_name}"
33
}
4-
5-
data "aws_iam_policy_document" "api_gateway_assume_role_policy" {
6-
statement {
7-
actions = ["sts:AssumeRole"]
8-
9-
principals {
10-
identifiers = [
11-
"apigateway.amazonaws.com"
12-
]
13-
type = "Service"
14-
}
15-
16-
effect = "Allow"
17-
}
18-
}
19-
20-
data "aws_iam_policy_document" "api_gateway_logging_policy" {
21-
statement {
22-
effect = "Allow"
23-
actions = [
24-
"logs:CreateLogGroup",
25-
"logs:CreateLogStream",
26-
"logs:DescribeLogGroups",
27-
"logs:DescribeLogStreams",
28-
"logs:PutLogEvents",
29-
"logs:GetLogEvents",
30-
"logs:FilterLogEvents"
31-
]
32-
resources = [
33-
"*"
34-
]
35-
}
36-
}
37-
38-
resource "aws_iam_role" "api_gateway_logging_role" {
39-
name = "api-gateway-logging-role-${var.component}-${var.deployment_identifier}-${local.sanitised_name}"
40-
assume_role_policy = data.aws_iam_policy_document.api_gateway_assume_role_policy.json
41-
}
42-
43-
resource "aws_iam_role_policy" "api_gateway_logging_role_policy" {
44-
name = "api-gateway-logging-policy-${var.component}-${var.deployment_identifier}-${local.sanitised_name}"
45-
role = aws_iam_role.api_gateway_logging_role.name
46-
policy = data.aws_iam_policy_document.api_gateway_logging_policy.json
47-
}
48-
49-
resource "aws_api_gateway_account" "api_gateway_account" {
50-
cloudwatch_role_arn = aws_iam_role.api_gateway_logging_role.arn
51-
}

permissions.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module "log_permissions" {
2+
source = "./modules/log_permissions"
3+
}

stages.tf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ module "default_stage" {
1616

1717
tags = var.tags
1818

19+
enable_auto_deploy = local.enable_default_stage_auto_deploy
20+
1921
include_default_tags = local.include_default_tags
2022
include_domain_name = local.include_default_stage_domain_name
2123
include_dns_record = local.include_default_stage_dns_record
22-
enable_auto_deploy = local.enable_default_stage_auto_deploy
2324

2425
providers = {
2526
aws = aws

0 commit comments

Comments
 (0)