resource "aws_sqs_queue" "management-events-dlq" { name = "${length(var.sqs_events_name) > 0 ? var.sqs_events_name : var.management_service_name}${length(var.sqs_events_name) > 0 ? "" : "-events"}-failed" visibility_timeout_seconds = 30 message_retention_seconds = 1209600 max_message_size = 262144 receive_wait_time_seconds = 0 } resource "aws_sqs_queue" "management-events-queue" { name = "${length(var.sqs_events_name) > 0 ? var.sqs_events_name : var.management_service_name}${length(var.sqs_events_name) > 0 ? "" : "-events"}" visibility_timeout_seconds = 60 message_retention_seconds = 1209600 max_message_size = 262144 receive_wait_time_seconds = 20 redrive_policy = "{\"deadLetterTargetArn\":\"${aws_sqs_queue.management-events-dlq.arn}\",\"maxReceiveCount\":5}" } resource "aws_sns_topic" "management-events" { name = "${length(var.sns_events_name) > 0 ? var.sns_events_name : var.management_service_name}${length(var.sns_events_name) > 0 ? "" : "-events"}" } data "aws_iam_policy_document" "management-queue" { statement { effect = "Allow" sid = "TopicPublish" actions = ["SQS:SendMessage"] resources = ["${aws_sqs_queue.management-events-queue.arn}"] condition { test = "ForAnyValue:ArnEquals" variable = "aws:SourceArn" values = ["${aws_sns_topic.management-events.arn}"] } principals { type = "AWS" identifiers = ["*"] } } } resource "aws_sqs_queue_policy" "management-events" { queue_url = "${aws_sqs_queue.management-events-queue.id}" policy = "${data.aws_iam_policy_document.management-queue.json}" } resource "aws_sns_topic_subscription" "management-events-subscription" { topic_arn = "${aws_sns_topic.management-events.arn}" endpoint = "${aws_sqs_queue.management-events-queue.arn}" protocol = "sqs" } resource "aws_sns_topic" "management-alerts" { name = "${length(var.sns_alerts_name) > 0 ? var.sns_alerts_name : var.management_service_name}${length(var.sns_alerts_name) > 0 ? "" : "-alerts"}" }