Skip to content

Commit 3252fae

Browse files
CCM-8197: Cross Account Observability
1 parent 4f3babc commit 3252fae

File tree

4 files changed

+49
-0
lines changed

4 files changed

+49
-0
lines changed

infrastructure/terraform/components/acct/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
|------|-------------|
4444
| <a name="output_dns_zone"></a> [dns\_zone](#output\_dns\_zone) | n/a |
4545
| <a name="output_github_pat_ssm_param_name"></a> [github\_pat\_ssm\_param\_name](#output\_github\_pat\_ssm\_param\_name) | n/a |
46+
| <a name="output_log_subscription_role_arn"></a> [log\_subscription\_role\_arn](#output\_log\_subscription\_role\_arn) | The ARN of the log subscription IAM role. |
4647
| <a name="output_s3_buckets"></a> [s3\_buckets](#output\_s3\_buckets) | n/a |
4748
| <a name="output_vpc_nat_ips"></a> [vpc\_nat\_ips](#output\_vpc\_nat\_ips) | n/a |
4849
| <a name="output_vpc_subnets"></a> [vpc\_subnets](#output\_vpc\_subnets) | n/a |
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
resource "aws_iam_role" "log_subscription_role" {
2+
name = "${local.csi}-log-subscription-role"
3+
4+
assume_role_policy = jsonencode({
5+
Version = "2012-10-17"
6+
Statement = [
7+
{
8+
Effect = "Allow"
9+
Principal = {
10+
Service = "logs.${var.region}.amazonaws.com"
11+
}
12+
Action = "sts:AssumeRole"
13+
}
14+
]
15+
})
16+
}
17+
18+
resource "aws_iam_policy" "log_subscription_policy" {
19+
name = "${local.csi}-log-subscription-policy"
20+
description = "Policy for log subscription to send logs to the destination"
21+
22+
policy = jsonencode({
23+
Version = "2012-10-17"
24+
Statement = [
25+
{
26+
Effect = "Allow"
27+
Action = [
28+
"logs:PutSubscriptionFilter",
29+
"logs:DescribeLogGroups",
30+
"logs:DescribeLogStreams",
31+
"logs:PutLogEvents"
32+
]
33+
Resource = "*"
34+
}
35+
]
36+
})
37+
}
38+
39+
resource "aws_iam_role_policy_attachment" "log_subscription_policy_attachment" {
40+
role = aws_iam_role.log_subscription_role.name
41+
policy_arn = aws_iam_policy.log_subscription_policy.arn
42+
}

infrastructure/terraform/components/acct/outputs.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,8 @@ output "vpc_subnets" {
3030
output "vpc_nat_ips" {
3131
value = module.vpc.nat_public_ips
3232
}
33+
34+
output "log_subscription_role_arn" {
35+
description = "The ARN of the log subscription IAM role."
36+
value = aws_iam_role.log_subscription_role.arn
37+
}

infrastructure/terraform/components/app/cloudwatch_log_group_amplify.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ resource "aws_cloudwatch_log_subscription_filter" "amplify" {
88
log_group_name = aws_cloudwatch_log_group.amplify.name
99
filter_pattern = ""
1010
destination_arn = "arn:aws:logs:${var.region}:${var.observability_account_id}:destination:nhs-notify-main-acct-firehose-logs"
11+
role_arn = local.acct.log_subscription_role_arn
1112
}

0 commit comments

Comments
 (0)