My company has an internal Slack bot for creating and sending reports between departments. Currently, someone can create a report and then manually send it out to a department whenever they're ready. Both of these actions are handled through a simple Lambda function. However, we're running into issues with people forgetting to send reports later on.
I'm looking into a way to allow a user to pre-select a time they'd like a report to be sent out. I've looked at just creating a CloudWatch cron expression dynamically for each report based on that selected time, but that doesn't seem very scalable - what if multiple users want a report sent out at the same time?
Is something like polling an SQS queue more sustainable* or is there a better solution for handling dynamic scheduling of events?
*I'd hate to have to run the Lambda function every minute just to poll for messages.
Any suggestions are greatly appreciated!