Serverless Framework部署Lambda时未创建AWS Scheduler触发器求助
AWS Scheduler触发器未创建排查(Serverless Framework)
可能的问题及修复方案
1. Serverless Framework版本过低
AWS Scheduler的事件集成需要Serverless Framework v3.25.0及以上版本,旧版本不支持method: scheduler配置。
- 执行命令检查当前版本:
serverless --version - 如果版本低于要求,升级到最新稳定版:
npm install -g serverless
2. 自定义IAM角色权限缺失
你指定的MyLambdaRole需要同时满足两个权限要求:
- 信任策略:允许AWS Scheduler服务调用Lambda,需添加以下信任关系:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": ["lambda.amazonaws.com", "scheduler.amazonaws.com"] }, "Action": "sts:AssumeRole" } ] } - 权限策略:确保角色拥有
lambda:InvokeFunction权限(如果已有相关Lambda执行权限可忽略)。
3. 配置语法错误
你的rate字段使用了数组格式,但单个cron表达式不需要用数组包裹,这会导致配置解析异常:
错误配置:
rate: - cron(0 6 * * ? *)
修正后:
rate: cron(0 6 * * ? *)
4. 完整修正后的配置示例
org: simoncook app: xxx service: xxx frameworkVersion: '3' provider: name: aws runtime: python3.8 iam: role: 'arn:aws:iam::xxx:role/MyLambdaRole' functions: my_function: handler: handler.my_function events: - schedule: method: scheduler rate: cron(0 6 * * ? *) timezone: Europe/London timeout: 60
验证步骤
- 重新部署服务:
serverless deploy - 登录AWS控制台,进入Amazon EventBridge Scheduler,检查是否存在对应调度任务
- 查看Lambda函数的触发器标签,确认AWS Scheduler已关联
- 等待触发时间,检查Lambda的CloudWatch日志确认执行情况
内容的提问来源于stack exchange,提问作者Simon Cook
相关产品推荐
相关产品推荐

