Добавьте политику фильтрации SNS через Terraform

#amazon-web-services #amazon-sns

#amazon-веб-сервисы #amazon-sns

Вопрос:

Я создал раздел SNS, и есть несколько других сервисов, подписанных на этот раздел для получения уведомлений.

Теперь мое требование — добавить политику фильтрации, чтобы сообщение получали только те службы, которые соответствуют требованиям.

В terraform есть поддержка delivery_policy, но невозможно использовать filter_policy на SNS.tf напрямую.

Пожалуйста, предложите, есть ли какая-либо альтернатива, или поправьте меня, если мой подход неверен.

PS: Я должен сделать это с помощью terraform, а не из консоли AWS

Спасибо, Сумуха

Комментарии:

1. У меня такая же проблема

Ответ №1:

фильтр должен применяться к подписчику, а не к самой теме, давайте предположим, что следующая конфигурация:

     resource "aws_sns_topic" "test" {
      name = "my-topic-with-policy"
    }

    resource "aws_sns_topic_subscription" "lambda_sns_subscription" {
      topic_arn = "${aws_sns_topic.test.arn}"
      protocol  = "lambda"
      endpoint  = "///"
      filter_policy = "${jsonencode(map("aa",list("aa")))}"
    }
  

смотрите атрибут filter_policy на ресурсе «aws_sns_topic_subscription»

и затем фильтр должен быть действительным json в соответствии с документом SNS Filter:https://docs.aws.amazon.com/sns/latest/dg/sns-subscription-filter-policies.html

Комментарии:

1. Спасибо!! Сработало идеально.

2. Чтобы помочь новичкам в этом ответе, синтаксис последней версии Terraform будет следующим: filter_policy = «${jsonencode(tomap({«aa»: tolist([«aa»])}))}»