X-Git-Url: http://git.squeep.com/?p=awsible;a=blobdiff_plain;f=infrastructure%2Fmodules%2Fmanagement-stack%2Fqueues.tf;fp=infrastructure%2Fmodules%2Fmanagement-stack%2Fqueues.tf;h=b44f69fc20e495d5842cb67c133d7db393d16e2d;hp=0000000000000000000000000000000000000000;hb=8576668075ca95e44481d9c9ed29d7e6af024bdc;hpb=933c48ff1e134168de3aaa2d20e4d43c13d04928 diff --git a/infrastructure/modules/management-stack/queues.tf b/infrastructure/modules/management-stack/queues.tf new file mode 100644 index 0000000..b44f69f --- /dev/null +++ b/infrastructure/modules/management-stack/queues.tf @@ -0,0 +1,48 @@ +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"}" +}