initial commit of replacement infrastructure automation
[awsible] / infrastructure / modules / management-stack / queues.tf
1 resource "aws_sqs_queue" "management-events-dlq" {
2 name = "${length(var.sqs_events_name) > 0 ? var.sqs_events_name : var.management_service_name}${length(var.sqs_events_name) > 0 ? "" : "-events"}-failed"
3 visibility_timeout_seconds = 30
4 message_retention_seconds = 1209600
5 max_message_size = 262144
6 receive_wait_time_seconds = 0
7 }
8 resource "aws_sqs_queue" "management-events-queue" {
9 name = "${length(var.sqs_events_name) > 0 ? var.sqs_events_name : var.management_service_name}${length(var.sqs_events_name) > 0 ? "" : "-events"}"
10 visibility_timeout_seconds = 60
11 message_retention_seconds = 1209600
12 max_message_size = 262144
13 receive_wait_time_seconds = 20
14 redrive_policy = "{\"deadLetterTargetArn\":\"${aws_sqs_queue.management-events-dlq.arn}\",\"maxReceiveCount\":5}"
15 }
16 resource "aws_sns_topic" "management-events" {
17 name = "${length(var.sns_events_name) > 0 ? var.sns_events_name : var.management_service_name}${length(var.sns_events_name) > 0 ? "" : "-events"}"
18 }
19 data "aws_iam_policy_document" "management-queue" {
20 statement {
21 effect = "Allow"
22 sid = "TopicPublish"
23 actions = ["SQS:SendMessage"]
24 resources = ["${aws_sqs_queue.management-events-queue.arn}"]
25 condition {
26 test = "ForAnyValue:ArnEquals"
27 variable = "aws:SourceArn"
28 values = ["${aws_sns_topic.management-events.arn}"]
29 }
30 principals {
31 type = "AWS"
32 identifiers = ["*"]
33 }
34 }
35 }
36 resource "aws_sqs_queue_policy" "management-events" {
37 queue_url = "${aws_sqs_queue.management-events-queue.id}"
38 policy = "${data.aws_iam_policy_document.management-queue.json}"
39 }
40 resource "aws_sns_topic_subscription" "management-events-subscription" {
41 topic_arn = "${aws_sns_topic.management-events.arn}"
42 endpoint = "${aws_sqs_queue.management-events-queue.arn}"
43 protocol = "sqs"
44 }
45
46 resource "aws_sns_topic" "management-alerts" {
47 name = "${length(var.sns_alerts_name) > 0 ? var.sns_alerts_name : var.management_service_name}${length(var.sns_alerts_name) > 0 ? "" : "-alerts"}"
48 }