Aws lambda AWS cron表达式正常,未触发lambda
我在AWS(CloudWatch触发器)中设置了以下cron表达式Aws lambda AWS cron表达式正常,未触发lambda,aws-lambda,cron,Aws Lambda,Cron,我在AWS(CloudWatch触发器)中设置了以下cron表达式 0*/5 7-12,下午1点到11点?*周一、周二、周三、周四、周五 在表达式生成器中,我得到了非常相似的表达式(7-23个小时) 每周一、周二、周三、周四和周五,每个月的第二个:00点,从第二个:00点开始,每5分钟,从早上7点到晚上23点,每小时一次 正如所料 但是,它不会被触发。我在日志里什么也没看到。 为什么呢?(当然,触发器已启用) 谢谢。当您创建CloudWatch事件规则或EventBridge事件规则(AWS现
0*/5 7-12,下午1点到11点?*周一、周二、周三、周四、周五
在表达式生成器中,我得到了非常相似的表达式(7-23个小时)
每周一、周二、周三、周四和周五,每个月的第二个:00点,从第二个:00点开始,每5分钟,从早上7点到晚上23点,每小时一次
正如所料
但是,它不会被触发。我在日志里什么也没看到。
为什么呢?(当然,触发器已启用)
谢谢。当您创建CloudWatch事件规则或EventBridge事件规则(AWS现在称之为)并选择Lambda函数作为目标时,您需要考虑以下两点:
CRON调度
您需要指定cron计划,该计划时区为UTC+0
我假设你在不同的时区,并观察到没有任何触发,因为下一个触发时间尚未到达
基于资源的政策
您需要检查的另一个机会是权限,您需要关注的是Lambda函数的基于资源的策略
转到AWS控制台,您可以检查Lambda的权限选项卡,并查看允许事件规则触发器所需的权限
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "AWSEvents",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:<REGION>:<ACCOUNT_ID>:function:<FUNCTION_NAME>",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:events:<REGION>:<ACCOUNT_ID>:rule/<RULE_NAME>"
}
}
}
]
}
{
“版本”:“2012-10-17”,
“Id”:“默认值”,
“声明”:[
{
“Sid”:“AWSEvents”,
“效果”:“允许”,
“委托人”:{
“服务”:“events.amazonaws.com”
},
“操作”:“lambda:InvokeFunction”,
“资源”:“arn:aws:lambda:::函数:”,
“条件”:{
“阿恩利克”:{
“AWS:SourceArn”:“arn:AWS:events:::rule/”
}
}
}
]
}
嗯,这个表达式不对
它只考虑分钟,而*/5
可能也把它弄糊涂了。不确定最后的*
0/57-23?*周一至周五*
-这很有效
要调试触发器,日志服务中有“规则”部分,您可以在其中查看下一次执行。因为CRON表达式是UTC时间格式。您能检查一下您的标准时间和UTC时间是否有时差吗
并相应地更改表达式。我希望它在UTC中。调用图为空,日志为空。3小时前开始,我想可能7-12也被视为pm,我想你可能会误解时区,但事实并非如此,那么我接下来关心的是你的Lambda功能权限,你可以查看我的更新答案,如上所述:染料,正如你提到的。sid较长与cron的表达式生成器相比,这是一个差异