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
|
variable "topics" {
description = "Map of SNS topic definitions"
type = map(object({
name = string
display_name = optional(string, null)
fifo_topic = optional(bool, false)
content_based_deduplication = optional(bool, false)
kms_master_key_id = optional(string, null)
delivery_policy = optional(string, null)
signature_version = optional(number, 1)
tracing_config = optional(string, "PassThrough")
archive_policy = optional(string, null)
# Feedback logging IAM roles per protocol
application_success_feedback_role_arn = optional(string, null)
application_failure_feedback_role_arn = optional(string, null)
application_success_feedback_sample_rate = optional(number, null)
http_success_feedback_role_arn = optional(string, null)
http_failure_feedback_role_arn = optional(string, null)
http_success_feedback_sample_rate = optional(number, null)
lambda_success_feedback_role_arn = optional(string, null)
lambda_failure_feedback_role_arn = optional(string, null)
lambda_success_feedback_sample_rate = optional(number, null)
sqs_success_feedback_role_arn = optional(string, null)
sqs_failure_feedback_role_arn = optional(string, null)
sqs_success_feedback_sample_rate = optional(number, null)
firehose_success_feedback_role_arn = optional(string, null)
firehose_failure_feedback_role_arn = optional(string, null)
firehose_success_feedback_sample_rate = optional(number, null)
}))
default = {}
}
variable "topic_policies" {
description = "Map of SNS topic policy definitions keyed by topic key"
type = map(object({
policy = string
}))
default = {}
}
variable "subscriptions" {
description = "Map of SNS subscription definitions"
type = map(object({
topic_key = string
protocol = string
endpoint = string
raw_message_delivery = optional(bool, false)
filter_policy = optional(string, null)
filter_policy_scope = optional(string, "MessageAttributes")
redrive_policy = optional(string, null)
delivery_policy = optional(string, null)
confirmation_timeout_in_minutes = optional(number, 1)
endpoint_auto_confirms = optional(bool, false)
}))
default = {}
}
variable "data_protection_policies" {
description = "Map of SNS data protection policy definitions keyed by topic key"
type = map(object({
policy = string
}))
default = {}
}
variable "tags" {
description = "Resource tags to apply to all resources"
type = map(string)
default = {}
}
|