Which solution will meet these requirements with the LEAST development effort?
Configure an Amazon SNS dead letter queue that has an Amazon Kinesis Data Stream target with a retention period of 14 days.
Add an Amazon Simple Queue Service (Amazon SQS) queue with a retention period of 14 days between the application and Amazon SNS.
Configure an Amazon SNS dead letter queue that has an Amazon Simple Queue Service (Amazon SQS) target with a retention period of 14 days.
Configure an Amazon SNS dead letter queue that has an Amazon DynamoDB target with a TTL attribute set for a retention period of 14 days.
Explanations:
While configuring an SNS dead letter queue with a Kinesis Data Stream target would allow for the retention of messages, Kinesis is primarily designed for processing streams of data rather than for retaining messages for later analysis. This option adds unnecessary complexity and does not directly provide the required message retention.
Adding an Amazon SQS queue between the application and SNS would allow for message buffering, but it does not address the requirement for retaining undelivered messages specifically. If the SQS queue were to fail to deliver messages to the warehouse, those messages would still be lost unless a dead letter queue is configured. This option does not provide a direct mechanism for analyzing undelivered messages.
Configuring an SNS dead letter queue with an SQS target allows undelivered messages to be stored for analysis. SQS has a retention period of up to 14 days, meeting the requirement for message retention and analysis without additional development effort. This option provides a straightforward way to handle undelivered messages.
While a DynamoDB target can be used for message retention, it requires additional development effort to manage the TTL attribute and the associated logic for querying messages. This complexity is not necessary given that SQS already provides a simpler solution for retaining messages for analysis.