如何解决AWS cron表达式正常,未触发lambda
我已经在AWS(CloudWatch触发器)中设置了以下cron表达式。
{
"Version": "2012-10-17","Statement": [
{
"Effect": "Allow","Action": ["s3:ListBucket"],"Resource": ["arn:aws:s3:::awsexamplebucket1"],"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
},{
"Effect": "Allow","Action": ["s3:*"],"Resource": ["arn:aws:s3:::awsexamplebucket1/*"],"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
在表达式生成器中,我得到了非常相似的表达(小时数为7-23)
df['Website'] = df['Website'].replace(['?trk'],'')
如预期的那样。
那是为什么? (当然会触发)
谢谢。
解决方法
当您创建CloudWatch Event Rule或EventBridge Event Rule(这是AWS如今所称的)并选择Lambda函数作为目标时,您需要考虑两个要点:
- CRON时间表
您需要指定cron计划,该计划时区为 UTC + 0 。
我假设您处于不同的时区,并观察到没有任何触发,因为还没有到达下一个触发时间。
- 基于资源的政策
您还需要检查一下权限,这是Lambda函数的Resource Based Policy
。
转到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>"
}
}
}
]
}
,
嗯,这个表达是不对的。
它仅考虑分钟,而*/5
也可能使它感到困惑。不确定最后的*
。
0/5 7-23 ? * MON-FRI *
-可行
要调试触发器,日志服务中有“规则”部分,您可以在其中查看下一次执行。
,因为 CRON 表达式采用 UTC 时间格式。请问您的标准时间和UTC时间是否有时差?
并相应地更改表达式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。