У меня была похожая ситуация, моей лямбде нужно было менять расписание на выходных, и вот как я ее решил.
def lambda_handler(event, context):
reschedule_event()
keep_working()
REGULAR_SCHEDULE = 'rate(20 minutes)'
WEEKEND_SHEDULE = 'rate(1 hour)'
RULE_NAME = 'My Rule'
def reschedule_event():
"""
Cambia la planificación de la lambda, para que descanse los findes :D
"""
sched = boto3.client('events')
current = sched.describe_rule(Name=RULE_NAME)
if is_weekend() and 'minutes' in current['ScheduleExpression']:
sched.put_rule(
Name=RULE_NAME,
ScheduleExpression=WEEKEND_SCHEDULE,
)
if not is_weekend and 'hour' in current['ScheduleExpression']:
sched.put_rule(
Name=RULE_NAME,
ScheduleExpression=REGULAR_SCHEDULE,
)
Я согласен, что должен быть какой-то правильный способ сделать это, но времени было мало в данный момент, и эту лямбду нужно было запустить в производство. Вы можете сделать что-то подобное, чтобы перенести свое расписание, когда нет данных для извлечения, а затем вернуться к исходному расписанию.