implement SNS Filter/operators $or, suffix, equals-ignore-case, anything-but #10691
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
As reported in #9738, AWS launched new operators for SNS filtering.
suffix
andequals-ignore-case
are pretty simple to implement, but$or
necessitated a quite consequent rewrite, as the logic can get quite convoluted pretty fast. It quickly creates a lot of different forks, where one rule can have multiple branches and a payload can have multiple branches too if it contains array.Also included better support for
anything-but
, which can accept any regular "plain" values like string, numbers and list of string & number. It can also accept theprefix
operator, see https://docs.aws.amazon.com/sns/latest/dg/string-value-matching.html#string-anything-but-matching-prefixAlso, we still had an issue with some ordering of complex payload with arrays, see #10567 (comment)
Changes
flatten_policy
, thanks a lot @cloutierMat for the great pairing session we've had, and you providing the final solution fixing all our issues! 🥳suffix
andequals-ignore-case
anything-but
skip
for the AWS validated$or
testflatten_payload
fixes #10567, fixes #9738