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 |