@aws-cdk/aws-scheduler-alpha

中文文档
2.186.0-alpha.0发布于 2025/03/27Apache-2.0TypeScriptCommonJS零依赖近 30 天下载 3.6万

此模块被贬值. 所有构造现在都可以在aws-cdk-lib/aws-cheduler下使用.

此软件包已被标记为弃用

This package has been stabilized and moved to aws-cdk-lib

中文使用文档
文档目录14 节
  1. 确定时间表
  2. 调度表达式
  3. 分组时间表
  4. 禁用时间表
  5. 配置时间表的起止时间
  6. 调度器目标
  7. 投入
  8. 指定执行角色
  9. 指定加密密钥
  10. 配置灵活时间窗口
  11. 处理错误
  12. 监测
  13. 所有时间表的计量
  14. 调度组的计量

亚马逊事件Bridge 调度器构造库


Deprecated

此API 可能会发出警告 。 后向兼容性没有保证 .


所有构造已移入 aws-cdk-lib/aws-scheduler。 。 。 .

亚马逊事件Bridge 调度器 是一个来自亚马逊事件Bridge的特性 用于创建、运行和管理预定任务。 使用 EventBridge 调度器,您可以在不提供或管理基础基础设施的情况下,为各种AWS服务安排数百万个一次性或重复的任务.

  1. 时间表: 调度是您使用 Amazon EventBridge 调度器创建,配置和管理的主要资源. 每个调度都有一个调度表达式,可以决定调度的时间和频率. EventBridge调度器支持三种调度:速率,克龙和一次性调度. 当您创建一个调度时,您会配置一个调度引用的目标 .
  2. 目标: 一个目标是一个 API 操作, EventBridge 调度器每次运行时都会代表您调用. 事件桥排程器 支持两类目标:模板化目标和普遍目标。 模板化目标在核心组别中援引共同的API操作 服务。 例如, EventBridge 调度器支持模板化的目标用于引用 AWS Lambda 函数或开始执行 Step 函数状态 机器。 机器。 。 对于没有模板目标支持的API操作,您可以使用自定义的通用目标. 通用目标支助 超过270个AWS服务的6000多个API业务.
  3. 时间表组: 调度组是一个Amazon EventBridge调度器资源,用于组织您的调度. 你的AWS账户来了 带有默认调度器组。 排程组总是会添加一个新的排程. 如果您不提供要添加的排程组, 它 将被添加到默认的调度组。 您可以在您的 AWS 账户中创建最多500个调度组 。 可以利用小组组织 从逻辑上,在组颗粒度时访问表度量并管理权限(详见下文). 调度组支持标记 . 使用 EventBridge 调度器,您对调度组应用标记,而不是对单个调度来组织您的资源 .

确定时间表

declare const fn: lambda.Function;

const target = new targets.LambdaInvoke(fn, {
    input: ScheduleTargetInput.fromObject({
        "payload": "useful",
    }),
});

const schedule = new Schedule(this, 'Schedule', {
    schedule: ScheduleExpression.rate(Duration.minutes(10)),
    target,
    description: 'This is a test schedule that invokes a lambda function every 10 minutes.',
});

调度表达式

在配置您的调度时, 您可以从三个调度类型中选择 : 速率计数、 克龙计数和一次性调度 .

按费率计算和按月计算的时间表都是经常性的时间表。 您可以使用一个调度表达式配置每个经常性调度类型.

对于 您可以指定一个时区, EventBridge 调度器将评价表达式.

declare const target: targets.LambdaInvoke;

const rateBasedSchedule = new Schedule(this, 'Schedule', {
    schedule: ScheduleExpression.rate(Duration.minutes(10)),
    target,
    description: 'This is a test rate-based schedule',
});

const cronBasedSchedule = new Schedule(this, 'Schedule', {
    schedule: ScheduleExpression.cron({ 
        minute: '0',
        hour: '23',
        day: '20',
        month: '11',
        timeZone: TimeZone.AMERICA_NEW_YORK,
    }),
    target,
    description: 'This is a test cron-based schedule that will run at 11:00 PM, on day 20 of the month, only in November in New York timezone',
});

一次性时间表是只引用目标一次的时间表. 您通过指定一天的时间、日期来配置一个一次性时间表, 和用于评估时间表的时区.

declare const target: targets.LambdaInvoke;

const oneTimeSchedule = new Schedule(this, 'Schedule', {
    schedule: ScheduleExpression.at(
        new Date(2022, 10, 20, 19, 20, 23),
        TimeZone.AMERICA_NEW_YORK,
    ),
    target,
    description: 'This is a one-time schedule in New York timezone',
});

分组时间表

您的 AWS 账户带有默认调度器组 。 您可以使用 :

const defaultScheduleGroup = ScheduleGroup.fromDefaultScheduleGroup(this, "DefaultGroup");

您可以在您管理的自定义调度组中添加一个调度 。 如果未指定自定义组,则会添加到默认组中.

declare const target: targets.LambdaInvoke;

const scheduleGroup = new ScheduleGroup(this, "ScheduleGroup", {
    scheduleGroupName: "MyScheduleGroup",
});

new Schedule(this, 'Schedule', {
    schedule: ScheduleExpression.rate(Duration.minutes(10)),
    target,
    scheduleGroup,
});

禁用时间表

默认情况下, 将会启用一个调度 。 您可以通过设置 enabled 属性改为虚假 :

declare const target: targets.LambdaInvoke;

new Schedule(this, 'Schedule', {
    schedule: ScheduleExpression.rate(Duration.minutes(10)),
    target: target,
    enabled: false,
});

配置时间表的起止时间

如果您选择了经常性时间表, 您可以通过指定 start 财务报告和审定财务报表 end。 。 。 .

declare const target: targets.LambdaInvoke;

new Schedule(this, 'Schedule', {
    schedule: ScheduleExpression.rate(cdk.Duration.hours(12)),
    target: target,
    start: new Date('2023-01-01T00:00:00.000Z'),
    end: new Date('2023-02-01T00:00:00.000Z'),
});

调度器目标

这个 @aws-cdk/aws-scheduler-targets-alpha 模块包括执行 IScheduleTarget 接口 各种AWS服务。 EventBridge调度器支持两类目标:

  1. 模板目标 援引共同API的 跨核心服务组的业务,以及
  2. 普遍目标 您可以自定义以调用更多 270多项服务的6 000多项业务.

所支持的目标清单可见于 @aws-cdk/aws-scheduler-targets-alpha。 。 。 .

投入

可以通过自定义输入来引用目标. 这个 ScheduleTargetInput 类支持自由形式文本输入和JSON格式对象输入:

const input = ScheduleTargetInput.fromObject({
    'QueueName': 'MyQueue'
});

您可以在目标有效载荷中包含上下文属性。 EventBridge 调度器将替换每个关键字为 其价值和交付目标。 见 完整支持的上下文属性列表数字 :

  1. ContextAttribute.scheduleArn() – 时刻表的ARN.
  2. ContextAttribute.scheduledTime() - 您指定时间表的时间以引用目标, 例如 2022-03-22T18: 59: 43Z .
  3. ContextAttribute.executionId() - Event Bridge 调度器为每次尝试引用目标而指定的独有的ID,例如 d32c5kddcf5bb8c3.
  4. ContextAttribute.attemptNumber() - 用于确定当前引用的尝试编号的计数器,例如 1.
const text = `Attempt number: ${ContextAttribute.attemptNumber}`;
const input = ScheduleTargetInput.fromText(text);

指定执行角色

执行角色是事件Bridge调度器为代表您与其它AWS服务互动而承担的IAM角色.

模板化时间表目标的类自动创建了IAM角色,并具有所有最低限度的必要 与模板目标交互的权限。 如果您希望指定自己的 IAM 角色, 那么模板化的目标 将给予最低要求的许可。 例如 LambdaInvoke 目标将给予 IAM执行角色 lambda:InvokeFunction 允许引用 Lambda 函数.

declare const fn: lambda.Function;

const role = new iam.Role(this, 'Role', {
    assumedBy: new iam.ServicePrincipal('scheduler.amazonaws.com'),
});

const target = new targets.LambdaInvoke(fn, {
    input: ScheduleTargetInput.fromObject({
        "payload": "useful"
    }),
    role,
});

指定加密密钥

EventBridge 调度器与 AWS 密钥管理服务(AWS KMS)整合,使用 AWS KMS 密钥加密并解密您的数据. EventBridge调度器支持两种类型的KMS密钥:AWS自有密钥和客户所管理的密钥.

默认情况下,调度器中的所有事件都会用AWS拥有和管理的密钥加密. 如果您也希望您能够提供客户管理的密钥, 以加密和解密您的日程交付给目标的有效载荷 key 属性. 目标类会自动添加 AWS kms:Decrypt 允许您执行任务 .

declare const key: kms.Key;
declare const fn: lambda.Function;

const target = new targets.LambdaInvoke(fn, {
    input: ScheduleTargetInput.fromObject({
        payload: 'useful',
    }),
});

const schedule = new Schedule(this, 'Schedule', {
    schedule: ScheduleExpression.rate(Duration.minutes(10)),
    target,
    key,
});

见 亚马逊事件Bridge调度器中的数据保护 更多细节.

配置灵活时间窗口

您可以通过指定时间窗口来配置灵活的时间窗口 timeWindow 属性. 弹性时间窗口默认被禁用 .

declare const target: targets.LambdaInvoke;

const schedule = new Schedule(this, 'Schedule', {
    schedule: ScheduleExpression.rate(Duration.hours(12)),
    target,
    timeWindow: TimeWindow.flexible(Duration.hours(10)),
});

见 配置灵活时间窗口 更多细节.

处理错误

当事件Bridge调度器无法发送事件时, 您可以配置您的调度处理失败的方式 通过使用两种主要机制,即重试政策和死字母队列(DLQ),成功实现目标.

重试策略决定 EventBridge 调度器必须重试失败事件的次数, 以及时间长度 以保留未处理的事件.

DLQ 是一个标准的 Amazon SQS 队列 EventBridge 排程器用于将失败的事件发送到重试后 政策已经用尽。 您可以使用 DLQ 来排除与您的日程或下游目标相关的故障 . 如果您已经为您的日程安排配置了重试策略, EventBridge 调度器会在之后发送死信事件 用尽重试策略中设置的最大重试次数.

declare const fn: lambda.Function;

const dlq = new sqs.Queue(this, "DLQ", {
    queueName: 'MyDLQ',
});

const target = new targets.LambdaInvoke(fn, {
    deadLetterQueue: dlq,
    maxEventAge: Duration.minutes(1),
    retryAttempts: 3
});

监测

您可以使用收集原始数据的 Cloud Watch 监视 Amazon EventBridge 调度器 并将其加工成可读的、接近实时的度量衡。 事件Bridge 调度器发射 所有时间表的一套衡量标准,以及时间表的一套额外衡量标准 有相关的死字队列( DLQ) 。 如果您为您的日程配置了 DLQ, EventBridge 排程器在您的排程耗尽其重试策略时会发布额外的度量.

所有时间表的计量

这个 Schedule 类提供了静态方法,用于访问带有默认配置的所有调度度量,例如 metricAllErrors 用于执行目标时查看错误.

new cloudwatch.Alarm(this, 'SchedulesErrorAlarm', {
   metric: Schedule.metricAllErrors(),
   threshold: 0,
   evaluationPeriods: 1,
});

调度组的计量

要查看特定组的参数, 您可以在类上使用方法 ScheduleGroup数字 :

const scheduleGroup = new ScheduleGroup(this, "ScheduleGroup", {
    scheduleGroupName: "MyScheduleGroup",
});

new cloudwatch.Alarm(this, 'MyGroupErrorAlarm', {
    metric: scheduleGroup.metricTargetErrors(),
    evaluationPeriods: 1,
    threshold: 0
});

// Or use default group
const defaultScheduleGroup = ScheduleGroup.fromDefaultScheduleGroup(this, "DefaultScheduleGroup");
new cloudwatch.Alarm(this, 'DefaultScheduleGroupErrorAlarm', {
    metric: defaultScheduleGroup.metricTargetErrors(),
    evaluationPeriods: 1,
    threshold: 0
});

见完整的衡量尺度清单及其描述,载于 利用云表量表进行监测 输入 AWS 事件Bridge 调度器用户指南。 。 。 .

版本与发布记录

@aws-cdk/aws-scheduler-alpha 共发布 151 个版本,首次发布于 2023/05/20;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.186.0-alpha.0latest2025/03/271.6 年前
2.185.0-alpha.02025/03/201.6 年前
2.184.1-alpha.02025/03/141.7 年前
2.184.0-alpha.02025/03/141.7 年前
2.183.0-alpha.02025/03/121.7 年前
2.182.0-alpha.02025/03/061.7 年前

关于 @aws-cdk/aws-scheduler-alpha 的常见问题

@aws-cdk/aws-scheduler-alpha 是什么?

此模块被贬值. 所有构造现在都可以在aws-cdk-lib/aws-cheduler下使用.注意:该包已被作者标记为弃用——This package has been stabilized and moved to aws-cdk-lib

如何安装 @aws-cdk/aws-scheduler-alpha?

在项目目录运行 npm install @aws-cdk/aws-scheduler-alpha,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:constructs(^10.0.0)、aws-cdk-lib(^2.186.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aws-cdk/aws-scheduler-alpha 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aws-cdk/aws-scheduler-alpha 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@aws-cdk/aws-scheduler-alpha 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 14.15.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aws-cdk/aws-scheduler-alpha 可以商用吗?

@aws-cdk/aws-scheduler-alpha 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-cdk/aws-scheduler-alpha 的下载量有多少?

根据 npm 官方下载统计,@aws-cdk/aws-scheduler-alpha 在 2026/10/08 – 2026/11/06 这 30 天内被下载 36,017 次,日均约 1,201 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aws-cdk/aws-scheduler-alpha 还在维护吗?

最新版本 2.186.0-alpha.0 发布于 2025/03/27(1.6 年前);至今共发布 151 个版本,其中过去 12 个月发布了 0 个;首次发布于 2023/05/20。作者已将其标记为弃用,新项目建议寻找替代方案。