AWS SQS Terraform module
Terraform module which creates SQS resources on AWS.
Usage
FIFO Queue
module "sqs" {
source = "terraform-aws-modules/sqs/aws"
name = "fifo"
fifo_queue = true
tags = {
Environment = "dev"
}
}
Queue Encrypted w/ Customer Managed KMS Key
module "sqs" {
source = "terraform-aws-modules/sqs/aws"
name = "cmk"
kms_master_key_id = "0d1ba9e8-9421-498a-9c8a-01e9772b2924"
kms_data_key_reuse_period_seconds = 3600
tags = {
Environment = "dev"
}
}
Queue w/ Dead Letter Queue
module "sqs" {
source = "terraform-aws-modules/sqs/aws"
name = "example"
create_dlq = true
redrive_policy = {
# default is 5 for this module
maxReceiveCount = 10
}
tags = {
Environment = "dev"
}
}
Subscribe Queue to SNS Topic
module "sns" {
source = "terraform-aws-modules/sns/aws"
version = ">= 5.0"
name = "pub-sub"
topic_policy_statements = {
sqs = {
sid = "SQSSubscribe"
actions = [
"sns:Subscribe",
"sns:Receive",
]
principals = [{
type = "AWS"
identifiers = ["*"]
}]
condition = [{
test = "StringLike"
variable = "sns:Endpoint"
values = [module.sqs.queue_arn]
}]
}
}
subscriptions = {
sqs = {
protocol = "sqs"
endpoint = module.sqs.queue_arn
}
}
tags = {
Environment = "dev"
}
}
module "sqs" {
source = "terraform-aws-modules/sqs/aws"
name = "pub-sub"
create_queue_policy = true
queue_policy_statements = {
sns = {
sid = "SNSPublish"
actions = ["sqs:SendMessage"]
principals = [
{
type = "Service"
identifiers = ["sns.amazonaws.com"]
}
]
condition = [{
test = "ArnEquals"
variable = "aws:SourceArn"
values = [module.sns.topic_arn]
}]
}
}
tags = {
Environment = "dev"
}
}
Examples
Conditional Creation
The following values are provided to toggle on/off creation of the associated resources as desired:
module "sqs" {
source = "terraform-aws-modules/sqs/aws"
# Disable creation of all resources
create = false
# Enable creation of queue policy
create_queue_policy = true
# Enable creation of dead letter queue
create_dlq = true
# Enable creation of dead letter queue policy
create_dlq_queue_policy = true
# ... omitted
}
Authors
Module is maintained by Anton Babenko with help from these awesome contributors.
License
Apache 2 Licensed. See LICENSE for full details.