【问题标题】:AWS Lambda retry after certain timeAWS Lambda 在一定时间后重试
【发布时间】:2019-11-02 08:39:59
【问题描述】:
我有一个 lambda,它与其他事情一起执行 GET 请求,每天早上 5 点,在某些服务上,由CloudWatchEvents 触发。
此服务可能有也可能没有我在查询时需要的数据。
因此,如果数据不存在,我需要重新调用 lambda,比如说 6am。如果它仍然不存在,请在 上午 7 点再次进行,以此类推。
如何使用 AWS 基础设施实现这一目标?
【问题讨论】:
标签:
amazon-web-services
aws-lambda
amazon-cloudwatch
【解决方案1】:
我也遇到过类似情况,我的 lambda 需要在周末更改日程安排,我就是这样解决的。
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,
)
我同意必须有一些适当的方法来做到这一点,但目前时间很短,并且 lambda 需要投入生产。当没有要检索的数据时,您可以做类似的事情来重新安排您的时间,然后回到原来的安排。