Came across this exact issue, but for message attributes. Was able to isolate the issue to: If any the message attribute values contain a double quote character ("), the SNS event is always filtered out
Here's a response from AWS admitting that this is a bug in SNS. Unfortunately since this was 3 years ago I'm not sure if there's any more activity on this matter...