1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# SNS topics ==================================================================
resource "aws_sns_topic" "this" {
for_each = var.topics
name = local.topic_names[each.key]
display_name = each.value.display_name
fifo_topic = each.value.fifo_topic
content_based_deduplication = each.value.fifo_topic ? each.value.content_based_deduplication : null
kms_master_key_id = each.value.kms_master_key_id
delivery_policy = each.value.delivery_policy
signature_version = each.value.signature_version
tracing_config = each.value.tracing_config
archive_policy = each.value.archive_policy
# Application feedback
application_success_feedback_role_arn = each.value.application_success_feedback_role_arn
application_failure_feedback_role_arn = each.value.application_failure_feedback_role_arn
application_success_feedback_sample_rate = each.value.application_success_feedback_sample_rate
# HTTP/HTTPS feedback
http_success_feedback_role_arn = each.value.http_success_feedback_role_arn
http_failure_feedback_role_arn = each.value.http_failure_feedback_role_arn
http_success_feedback_sample_rate = each.value.http_success_feedback_sample_rate
# Lambda feedback
lambda_success_feedback_role_arn = each.value.lambda_success_feedback_role_arn
lambda_failure_feedback_role_arn = each.value.lambda_failure_feedback_role_arn
lambda_success_feedback_sample_rate = each.value.lambda_success_feedback_sample_rate
# SQS feedback
sqs_success_feedback_role_arn = each.value.sqs_success_feedback_role_arn
sqs_failure_feedback_role_arn = each.value.sqs_failure_feedback_role_arn
sqs_success_feedback_sample_rate = each.value.sqs_success_feedback_sample_rate
# Firehose feedback
firehose_success_feedback_role_arn = each.value.firehose_success_feedback_role_arn
firehose_failure_feedback_role_arn = each.value.firehose_failure_feedback_role_arn
firehose_success_feedback_sample_rate = each.value.firehose_success_feedback_sample_rate
tags = local.tags
}
# SNS topic policies ==========================================================
resource "aws_sns_topic_policy" "this" {
for_each = var.topic_policies
arn = aws_sns_topic.this[each.key].arn
policy = each.value.policy
}
# SNS data protection policies ================================================
resource "aws_sns_topic_data_protection_policy" "this" {
for_each = var.data_protection_policies
arn = aws_sns_topic.this[each.key].arn
policy = each.value.policy
}
# SNS subscriptions ===========================================================
resource "aws_sns_topic_subscription" "this" {
for_each = var.subscriptions
topic_arn = aws_sns_topic.this[each.value.topic_key].arn
protocol = each.value.protocol
endpoint = each.value.endpoint
raw_message_delivery = each.value.raw_message_delivery
filter_policy = each.value.filter_policy
filter_policy_scope = each.value.filter_policy != null ? each.value.filter_policy_scope : null
redrive_policy = each.value.redrive_policy
delivery_policy = each.value.delivery_policy
confirmation_timeout_in_minutes = each.value.confirmation_timeout_in_minutes
endpoint_auto_confirms = each.value.endpoint_auto_confirms
}
|