README

sqs

Creates SQS queues (standard and FIFO) with optional encryption, dead-letter queue redrive policies, redrive allow policies, and access policies.

FIFO queue names are automatically suffixed with .fifo if not already present. Dead-letter queue references use queue keys from the same module invocation, so DLQ ARNs are resolved automatically.

Usage

module "sqs" {
  source  = "hcassc.jfrog.io/iac-terraform-modules-virtual/messaging/sqs/aws"
  version = "0.1.0"

  queues = {
    orders_dlq = {
      name                      = "prod-orders-dlq"
      message_retention_seconds = 1209600
      kms_master_key_id         = module.kms.key_arn
    }

    orders = {
      name                       = "prod-orders"
      visibility_timeout_seconds = 60
      kms_master_key_id          = module.kms.key_arn

      redrive_policy = {
        dead_letter_queue_key = "orders_dlq"
        max_receive_count     = 5
      }
    }

    events_dlq = {
      name       = "prod-events-dlq"
      fifo_queue = true
      kms_master_key_id = module.kms.key_arn
    }

    events = {
      name                        = "prod-events"
      fifo_queue                  = true
      content_based_deduplication = true
      kms_master_key_id           = module.kms.key_arn

      redrive_policy = {
        dead_letter_queue_key = "events_dlq"
        max_receive_count     = 3
      }
    }
  }

  queue_policies = {
    orders = {
      policy = data.aws_iam_policy_document.orders_sqs.json
    }
  }

  tags = {
    Environment = "prod"
    Team        = "platform"
  }
}

Requirements

Name Version
terraform ~> 1.5
aws ~> 6.50

Providers

Name Version
aws 6.50.0

Resources

Name Type
aws_sqs_queue.this resource
aws_sqs_queue_policy.this resource

Inputs

Name Description Type Default Required
queue_policies Map of SQS queue policy definitions keyed by queue key map(object({ policy = string })) {} no
queues Map of SQS queue definitions map(object({ name = string fifo_queue = optional(bool, false) content_based_deduplication = optional(bool, false) deduplication_scope = optional(string, null) fifo_throughput_limit = optional(string, null) delay_seconds = optional(number, 0) max_message_size = optional(number, 262144) message_retention_seconds = optional(number, 345600) receive_wait_time_seconds = optional(number, 0) visibility_timeout_seconds = optional(number, 30) kms_master_key_id = optional(string, null) kms_data_key_reuse_period_seconds = optional(number, 300) sqs_managed_sse_enabled = optional(bool, null) redrive_policy = optional(object({ dead_letter_queue_key = string max_receive_count = optional(number, 3) }), null) redrive_allow_policy = optional(object({ redrive_permission = optional(string, "byQueue") source_queue_arns = optional(list(string), []) }), null) })) {} no
tags Resource tags to apply to all resources map(string) {} no

Outputs

Name Description
queue_arns Map of queue keys to SQS queue ARNs
queue_ids Map of queue keys to SQS queue URLs (IDs)
queue_names Map of queue keys to SQS queue names
queue_urls Map of queue keys to SQS queue URLs