#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»])}))}»