如何用AWS SDK for .NET创建Amazon EventBridge调度计划以调用Lambda?
使用AWS SDK for .NET创建EventBridge Scheduler并触发Lambda函数
之前你用EventBridge规则实现任务调度,现在要切换到新的EventBridge Scheduler功能,核心是使用AmazonSchedulerClient调用CreateSchedule API,同时配置Lambda作为调度目标,以下是具体实现步骤和代码:
前提准备
- 确保项目已引入AWS SDK for .NET的
Amazon.EventBridge.Scheduler包(可通过NuGet安装) - 提前创建一个IAM角色,该角色需要授予EventBridge Scheduler调用Lambda的权限(权限策略需允许
scheduler.amazonaws.com执行lambda:InvokeFunction动作,目标为你的Lambda函数ARN)
代码实现
using Amazon.EventBridge.Scheduler; using Amazon.EventBridge.Scheduler.Model; // 初始化Scheduler客户端 var schedulerClient = new AmazonSchedulerClient(); // 构造创建调度计划的请求 var createScheduleRequest = new CreateScheduleRequest { Name = "你的调度计划名称", ScheduleExpression = "cron(0 12 * * ? *)", // 替换为你的Cron表达式 State = isEnabled ? ScheduleState.ENABLED : ScheduleState.DISABLED, Description = "Demo: 定时触发Lambda函数", // 配置目标为Lambda函数 Target = new Target { Arn = "你的Lambda函数ARN", RoleArn = "允许Scheduler调用Lambda的IAM角色ARN" // 如果需要传递自定义参数给Lambda,可添加Input字段 // Input = "{\"key\": \"value\"}" } }; // 发送请求创建调度计划 var createScheduleResponse = await schedulerClient.CreateScheduleAsync(createScheduleRequest); // 输出调度计划ARN(可选) Console.WriteLine($"已创建调度计划,ARN: {createScheduleResponse.ScheduleArn}");
关键说明
- 与旧的EventBridge规则不同,EventBridge Scheduler的目标配置直接包含在
CreateScheduleRequest的Target属性中,无需单独创建事件目标 - 必须指定
RoleArn,该角色需要信任scheduler.amazonaws.com作为主体,同时具备调用目标Lambda的权限 - 调度表达式支持Cron或Rate格式,用法与旧规则一致
- 如果需要更新调度计划,可使用
UpdateScheduleAsync方法;删除则用DeleteScheduleAsync
内容的提问来源于stack exchange,提问作者Ahmad
相关产品推荐
相关产品推荐

