Thank you for reaching out to us. Firehose does have some latency due to buffering hints[1] in the service. Having Kinesis stream connector to kinesis analytics takes care of checkpoints/batching and this can be read by lambda and written to SNS. The architecture is as below:
Kinesis analytics --> Kinesis stream --> lambda --> SNS
Please refer to the below blog for example architecture : -- https://aws.amazon.com/blogs/big-data/building-a-real-time-notification-system-with-amazon-kinesis-data-streams-for-amazon-dynamodb-and-amazon-kinesis-data-analytics-for-apache-flink/
Please note that de-duplication should be done on consumer end. This can be done in lambda function in the above case. Let us know if you may have any other queries.
References
[1] https://docs.aws.amazon.com/firehose/latest/APIReference/API_BufferingHints.html
Relevant questions
Kinesis Analytics for SQL Application Issue
asked 2 months agoKinesis Java Application limits
asked 3 years agoHow to set the starting position for a Kinesis Delivery Stream
asked 25 days agoKinesis Analytics Application output to SNS?
asked 17 days agoWhy does the Kinesis Firehose output "Throttling error encountered when calling Kinesis".
asked 4 months agoHow to Integrate a Kinesis Data Analytics Flink Application with a Self-Managed Kafka Cluster Running on Amazon EC2 (not Amazon MSK)?
Accepted Answerasked 2 years agoMultiple Kinesis Data Analytics apps to use the same Kinesis firehose delivery stream as source
Accepted Answerasked 2 years agoEnhanced fan-out and data analytics
asked 2 years agoHow to post separate messages to Kinesis
asked 7 months agoKDA (Flink) to S3
Accepted Answerasked 2 years ago