This is the template trigger code I use in my automation. Automations triggers and ramps up lighting 5min before phone alarm goes off.
The template checks the current time/date at the start of ever minute (the bracketed bit formats the current timestamp) then checks to see if current time matches my next alarm time formula and triggers automation if it does match.
The next alarm formula gets the (time to) next alarm in milliseconds, devides that by a thousand to make it seconds then, subtracts 300 (= 5 minutes) then prints that formula to a time stamp formatted the same as the current time stamp (for it to compare against)
This is for an Android phone and using the companion app sensor for 'next alarm'. #USER# is to be replaced with users own name/entity. Not sore how much of this translates to an Amazon thing but, hopefully give you a bit of an idea of how to perform it once you find the right entity?
{{now().strftime('%H:%M %Z %a %d %h %Y') == (((state_attr('sensor.#USER#_phone_next_alarm', 'Time in Milliseconds') | int / 1000 | int - 300 )) | timestamp_custom('%H:%M %Z %a %d %h %Y'))}}