AWS SNS Topic Terraform module
Terraform module which creates SNS resources on AWS
Usage
Simple Topic
module "sns_topic" {
source = "terraform-aws-modules/sns/aws"
name = "simple"
tags = {
Environment = "dev"
Terraform = "true"
}
}
Topic w/ SQS Subscription
module "sns_topic" {
source = "terraform-aws-modules/sns/aws"
name = "pub-sub"
topic_policy_statements = {
pub = {
actions = ["sns:Publish"]
principals = [{
type = "AWS"
identifiers = ["arn:aws:iam::66666666666:role/publisher"]
}]
},
sub = {
actions = [
"sns:Subscribe",
"sns:Receive",
]
principals = [{
type = "AWS"
identifiers = ["*"]
}]
conditions = [{
test = "StringLike"
variable = "sns:Endpoint"
values = ["arn:aws:sqs:eu-west-1:11111111111:subscriber"]
}]
}
}
subscriptions = {
sqs = {
protocol = "sqs"
endpoint = "arn:aws:sqs:eu-west-1:11111111111:subscriber"
}
}
tags = {
Environment = "dev"
Terraform = "true"
}
}
FIFO Topic w/ FIFO SQS Subscription
module "sns_topic" {
source = "terraform-aws-modules/sns/aws"
name = "my-topic"
# SQS queue must be FIFO as well
fifo_topic = true
content_based_deduplication = true
topic_policy_statements = {
pub = {
actions = ["sns:Publish"]
principals = [{
type = "AWS"
identifiers = ["arn:aws:iam::66666666666:role/publisher"]
}]
},
sub = {
actions = [
"sns:Subscribe",
"sns:Receive",
]
principals = [{
type = "AWS"
identifiers = ["*"]
}]
conditions = [{
test = "StringLike"
variable = "sns:Endpoint"
values = ["arn:aws:sqs:eu-west-1:11111111111:subscriber.fifo"]
}]
}
}
subscriptions = {
sqs = {
protocol = "sqs"
endpoint = "arn:aws:sqs:eu-west-1:11111111111:subscriber.fifo"
}
}
tags = {
Environment = "dev"
Terraform = "true"
}
}
Examples
Authors
Module is maintained by Anton Babenko with help from these awesome contributors.
License
Apache 2 Licensed. See LICENSE for full details.