ну у меня в свое время была сумасшедшая идея just for fun - делать scheduler на очередях (правда в ажуре, но AWS умеет в Visibility timeout даже лучше - The maximum visibility timeout is 12 hours) - берем, кладем сообщение в очередь с временем когда надо что-то выполнить, функция его тут же вытаскивает, проверяет время, если не в пределах max visibility timeot -вычисляем когда сообщение в очереди должно появиться - и прячем на это время, если в будущем - ставим максимальный таймаут, не удаляем сообщение, просто выкидываем. По истечению visibility timeout - сообщение перепоявится в очереди.
Причем гарантии дает сама очередь, а они довольно мощные, такой scheduling для бедных. А главное - время события контроллируется снаружи потому что что записал в сообщение - то и будет.