The SNS documentation FAQ's says:
SNS provides durable storage of all messages that it receives. Upon receiving a publish request, SNS stores multiple copies (to disk) of the message across multiple Availability Zones before acknowledging receipt of the request to the sender. Each AWS Region has multiple, isolated locations known as Availability Zones. Although rare, should a failure occur in one zone, the operation of SNS and the durability of your messages continue without disruption.
And
If it is critical that all published messages be successfully processed, developers should have notifications delivered to an SQS queue (in addition to notifications over other transports).
I was curious at a theoretical level, does anyone know of any conditions which would cause a message that was accepted by SNS (i.e. the API responded with a success code leading the consumer to believe the message has successfully been accepted) to be "lost", specifically when using an SQS consumer subscribed to the queue, i.e. the message isn't (and will never be) delivered to the SQS subscriber.
Footnote: I did ask this same question on server fault approx a month ago but sadly didn't get any traction on this. If the question is framed badly it'd be good to know how I can improve it.