【问题标题】:Boto3 cron: Parameter ScheduleExpression is not validBoto3 cron:参数 ScheduleExpression 无效
【发布时间】:2017-06-16 17:47:09
【问题描述】:

我正在尝试在执行 15 分钟后将事件安排为:

client = boto3.client('events')
d = datetime.now() + timedelta(minutes=40)
cronJob = "cron(" + str(d.hour) + " " + str(d.minute) + " * * ? *)"
client.put_rule(Name='extractData', ScheduleExpression=cronJob, State='ENABLED', Description='This is rule extracting flurry data')
try:
    client.put_targets( Rule='extractData', Targets=[ { 'Id': '1', 'Arn': 'arn:aws:lambda:ap-southeast-1:381409677897:function:flurry_extractReportOnDemand' }])
except:
    print("\n###################\n")
    print ("Could not schedule")
    print("\n###################\n") 

这给了我错误

Parameter ScheduleExpression is not valid.

知道为什么吗?

【问题讨论】:

    标签: python amazon-web-services cron boto3


    【解决方案1】:

    http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions

    第一个值应该是分钟,第二个值应该是小时。

    所以你的代码应该是:

    cronJob = "cron(" + str(d.minute) + " " + str(d.hour) + " * * ? *)"
    

    而不是"cron(" + str(d.hour) + " " + str(d.minute) + " * * ? *)"

    【讨论】:

    • 这是一个诚实的错误。我想说的是 Boto3 文档有点误导。
    【解决方案2】:

    要在特定日期时间只运行一次,您还应该指定日、月和年。

    只需将 day_of_month 保留为“?”因为那是针对每周活动的。

    d = datetime.now() + timedelta(minutes=40)
    cronJob = f"cron({d.minute} {d.hour} {d.day} {d.month} ? {d.year})"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 2021-04-24
      • 2019-12-23
      • 2019-05-26
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      相关资源
      最近更新 更多