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 = {} }