diff --git a/sns.tf b/sns.tf new file mode 100644 index 0000000000000000000000000000000000000000..6e489495df3c5ec44e8b77290217aec708a15e88 --- /dev/null +++ b/sns.tf @@ -0,0 +1,87 @@ +resource "aws_sns_topic" "topic" { + name = local.Name + tags = local.common_tags +} + +locals { + topic_arn = aws_sns_topic.topic.arn + topic_name = aws_sns_topic.topic.name +} + +output "topic_arn" { + description = "ARN of the alerts SNS topic." + value = local.topic_arn +} + +output "topic_name" { + description = "Name of the alerts SNS topic." + value = local.topic_name +} + +variable "subscriptions" { + default = [ + ["+972528713696", "sms"] + ] + description = "A list of subscriptions to the SNS topic." +} + +output "subscriptions" { + description = "A list of subscriptions to the SNS topic." + value = var.subscriptions +} + +resource "aws_sns_topic_subscription" "subscriptions" { + count = length(var.subscriptions) + endpoint = element(var.subscriptions[count.index], 0) + protocol = element(var.subscriptions[count.index], 1) + topic_arn = local.topic_arn +} + +data "aws_iam_policy_document" "publish" { + statement { + effect = "Allow" + + actions = [ + "SNS:ListTopics" + ] + + resources = ["*"] + } + + statement { + effect = "Allow" + + actions = [ + "SNS:Publish" + ] + + resources = [ + local.topic_arn, + ] + } +} + +locals { + sns_publish_policy_doc = data.aws_iam_policy_document.publish.json +} + +resource "aws_iam_policy" "publish" { + name = "${local.module}-${local.env}-publish" + policy = local.sns_publish_policy_doc + tags = local.common_tags +} + +locals { + publish_policy_arn = aws_iam_policy.publish.arn + publish_policy_name = aws_iam_policy.publish.name +} + +output "publish_policy_arn" { + value = local.publish_policy_arn + description = "SNS publish IAM policy ARN." +} + +output "publish_policy_name" { + value = local.publish_policy_name + description = "SNS publish IAM policy name." +}