# SQS queues ================================================================== resource "aws_sqs_queue" "this" { for_each = var.queues name = local.queue_names[each.key] fifo_queue = each.value.fifo_queue content_based_deduplication = each.value.fifo_queue ? each.value.content_based_deduplication : null deduplication_scope = each.value.fifo_queue ? each.value.deduplication_scope : null fifo_throughput_limit = each.value.fifo_queue ? each.value.fifo_throughput_limit : null delay_seconds = each.value.delay_seconds max_message_size = each.value.max_message_size message_retention_seconds = each.value.message_retention_seconds receive_wait_time_seconds = each.value.receive_wait_time_seconds visibility_timeout_seconds = each.value.visibility_timeout_seconds kms_master_key_id = each.value.kms_master_key_id kms_data_key_reuse_period_seconds = each.value.kms_master_key_id != null ? each.value.kms_data_key_reuse_period_seconds : null # sqs_managed_sse_enabled must not be set when kms_master_key_id is set sqs_managed_sse_enabled = each.value.kms_master_key_id == null ? each.value.sqs_managed_sse_enabled : null redrive_policy = each.value.redrive_policy != null ? jsonencode({ deadLetterTargetArn = aws_sqs_queue.this[each.value.redrive_policy.dead_letter_queue_key].arn maxReceiveCount = each.value.redrive_policy.max_receive_count }) : null redrive_allow_policy = each.value.redrive_allow_policy != null ? jsonencode({ redrivePermission = each.value.redrive_allow_policy.redrive_permission sourceQueueArns = each.value.redrive_allow_policy.source_queue_arns }) : null tags = local.tags } # SQS queue policies ========================================================== resource "aws_sqs_queue_policy" "this" { for_each = var.queue_policies queue_url = aws_sqs_queue.this[each.key].id policy = each.value.policy }