1- resource "aws_sns_topic_policy" "main " {
2- arn = aws_sns_topic. main . arn
1+ resource "aws_sns_topic_policy" "main_orig " {
2+ arn = aws_sns_topic. main_orig . arn
33
44 policy = data. aws_iam_policy_document . sns_topic_policy . json
55}
66
7+ resource "aws_sns_topic_policy" "main_clone" {
8+ arn = aws_sns_topic. main_clone . arn
9+
10+ policy = data. aws_iam_policy_document . sns_topic_policy . json
11+ }
12+
13+ data "aws_iam_policy_document" "sns_topic_policy" {
14+ policy_id = " __default_policy_ID"
15+
16+ statement {
17+ sid = " AllowAllSNSActionsFromAccount"
18+ effect = " Allow"
19+
20+ principals {
21+ type = " AWS"
22+ identifiers = [" *" ]
23+ }
24+
25+ actions = [
26+ " SNS:Subscribe" ,
27+ " SNS:SetTopicAttributes" ,
28+ " SNS:RemovePermission" ,
29+ " SNS:Receive" ,
30+ " SNS:Publish" ,
31+ " SNS:ListSubscriptionsByTopic" ,
32+ " SNS:GetTopicAttributes" ,
33+ " SNS:DeleteTopic" ,
34+ " SNS:AddPermission" ,
35+ ]
36+
37+ resources = [
38+ aws_sns_topic . main_orig . arn ,
39+ ]
40+
41+ condition {
42+ test = " StringEquals"
43+ variable = " AWS:SourceOwner"
44+
45+ values = [
46+ var . aws_account_id ,
47+ ]
48+ }
49+ }
50+
51+ statement {
52+ sid = " AllowAllSNSActionsFromSharedAccount"
53+ effect = " Allow"
54+ actions = [
55+ " SNS:Publish" ,
56+ ]
57+
58+ principals {
59+ type = " AWS"
60+ identifiers = [
61+ " arn:aws:iam::${ var . shared_infra_account_id } :root"
62+ ]
63+ }
64+
65+ resources = [
66+ aws_sns_topic . main_orig . arn ,
67+ ]
68+ }
69+ }
70+
771data "aws_iam_policy_document" "sns_topic_policy" {
872 policy_id = " __default_policy_ID"
973
@@ -29,7 +93,7 @@ data "aws_iam_policy_document" "sns_topic_policy" {
2993 ]
3094
3195 resources = [
32- aws_sns_topic . main . arn ,
96+ aws_sns_topic . main_clone . arn ,
3397 ]
3498
3599 condition {
@@ -57,7 +121,7 @@ data "aws_iam_policy_document" "sns_topic_policy" {
57121 }
58122
59123 resources = [
60- aws_sns_topic . main . arn ,
124+ aws_sns_topic . main_clone . arn ,
61125 ]
62126 }
63127}
0 commit comments