initial commit of replacement infrastructure automation
[awsible] / infrastructure / modules / management-stack / queues.tf
diff --git a/infrastructure/modules/management-stack/queues.tf b/infrastructure/modules/management-stack/queues.tf
new file mode 100644 (file)
index 0000000..b44f69f
--- /dev/null
@@ -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"}"
+}