Cloudformation SNS subscription filterpolicy with "or" conditions of "and" expressions

0

I use AWS YAML cloudformation to create SNS subscription and need filter policy with multiple "or" conditions each having "and" expressions.

Something like:

{"creditAccountNumber": ["00001"], "status": ["OK", "CANCEL"] } or {"debitAccountNumber": ["00001"], "status": ["OK", "CANCEL"] }

It would be something similar to cloudformation below(wich doesn't work).

  ObjectTest:
    Type: AWS::SNS::Subscription
    Properties:
      RawMessageDelivery: true
      Protocol: sqs
      Endpoint: ...
      Region: ...
      TopicArn: ...
      FilterPolicy: !Or
        - '{"creditAccountNumber": ["00001"], "status": ["OK", "CANCEL"] }'
        - '{"debitAccountNumber": ["00001"], "status": ["OK", "CANCEL"] }'

Does anyone know how to do it correctly?

Thanks.

2 réponses
1

Seems you can't even do that kind of SNS subscription filter policy directly. As per the AWS documentation https://docs.aws.amazon.com/sns/latest/dg/and-or-logic.html:

Currently, you can't use SNS filters to apply OR logic across different message attributes. Instead, you can use multiple SNS subscriptions with different endpoints to achieve the same effect. For example, assume that you have message attributes named customer_interests and customer_preferences. To apply OR logic across both attributes, create an SNS subscription to match each message attribute. Then, you can use your subscriber application to consume both types of messages through the different endpoints.

profile picture
joahna
répondu il y a 2 ans
0

In Nov 2023, SNS message filtering added support for the “OR” operator in filter policies. More information: https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-sns-message-additional-filtering-operators/

Otavio
répondu il y a 5 mois

Vous n'êtes pas connecté. Se connecter pour publier une réponse.

Une bonne réponse répond clairement à la question, contient des commentaires constructifs et encourage le développement professionnel de la personne qui pose la question.

Instructions pour répondre aux questions