# 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 }