ОБНОВЛЕНИЕ: Cloudformation теперь поддерживает SNS Topic Filters, поэтому этот вопрос больше не актуален, никаких пользовательских плагинов или кода не требуется.
Я строю систему с несколькими темами SNS и несколькими лямбдами, каждый из которых читает сообщения из назначенной им очереди SQS. Очереди SQS подписаны на темы SNS, но также имеют политику фильтрации, поэтому сообщения попадают в соответствующие очереди SQS.
Хорошо работает, когда я настраиваю подписки в консоли AWS.
Сейчас я пытаюсь сделать то же самое в своем коде, но в документации AWS Cloudformation не описано, как добавить политику фильтрации в подписку. Основываясь на примерах python здесь , я попробовал следующее:
StopOperationSubscription:
Type: "AWS::SNS::Subscription"
Properties:
Protocol: sqs
TopicArn:
Ref: StatusTopic
Endpoint:
Fn::GetAtt: [StopActionQueue, Arn]
FilterPolicy: '{"value": ["stop"]}'
Но тогда я получаю эту ошибку:
An error occurred: StopOperationSubscription - Encountered unsupported property FilterPolicy.
Как я могу установить необходимую политику фильтрации с помощью CloudFormation? И если это не поддерживается, что вы предлагаете в качестве альтернативы?
Я хочу, чтобы он настраивался автоматически при развертывании моего безсерверного приложения, без каких-либо ручных действий.