@aws-cdk/aws-scheduler-targets-alpha

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

此模块被贬值. 现在,所有建筑均可在aws-cdk-lib/aws-schedler-targets下使用.

此软件包已被标记为弃用

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

中文使用文档
文档目录13 节
  1. 启动 Lambda 函数
  2. 启动 AWS 步函数
  3. 启动代码构建任务
  4. 向 SQS 队列发送信件
  5. 向 Amazon SNS 专题发布消息
  6. 将事件发送到 EventBridge 事件总线
  7. 启动亚马逊检查员评估
  8. 给亚马逊 Kinesis 数据流记录
  9. 给亚马逊数据放唱片
  10. 启动代码Pipeline执行
  11. 启动 SageMaker 管道执行
  12. 安排一个ECS任务运行
  13. 启动更宽的 AWS API

亚马逊事件Bridge 调度器目标构建库


Deprecated

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


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

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

此库包含 Amazon EventBridge 调度器的集成类 支持的AWS服务数量.

支持下列目标:

  1. targets.LambdaInvoke数字 : 启动 AWS Lambda 函数
  2. targets.StepFunctionsStartExecution数字 : 启动 AWS 步函数
  3. targets.CodeBuildStartBuild数字 : 启动代码构建任务
  4. targets.SqsSendMessage数字 : 向 Amazon SQS 队列发送信件
  5. targets.SnsPublish数字 : 向 Amazon SNS 专题发布消息
  6. targets.EventBridgePutEvents数字 : 将事件放在事件桥上
  7. targets.InspectorStartAssessmentRun数字 : 启动亚马逊检查员评估
  8. targets.KinesisStreamPutRecord数字 : 给亚马逊 Kinesis 数据流记录
  9. targets.FirehosePutRecord数字 : 给亚马逊数据放唱片
  10. targets.CodePipelineStartPipelineExecution数字 : 启动代码Pipeline执行
  11. targets.SageMakerStartPipelineExecution数字 : 启动 SageMaker 管道执行
  12. targets.EcsRunTask数字 : 开始一项新的ECS任务
  13. targets.Universal数字 : 启动更宽的 AWS API

启动 Lambda 函数

使用 LambdaInvoke 目标以引用 lambda 函数.

下面的代码片段创建了以 Lambda 函数作为目标的事件规则 每隔一小时由 EventBridge 调度员用定制的有效载荷打电话 您可以选择附加 死信队列。 。 。 .

import * as lambda from 'aws-cdk-lib/aws-lambda';

const fn = new lambda.Function(this, 'MyFunc', {
    runtime: lambda.Runtime.NODEJS_LATEST,
    handler: 'index.handler',
    code: lambda.Code.fromInline(`exports.handler = handler.toString()`),
});

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

const target = new targets.LambdaInvoke(fn, {
    deadLetterQueue: dlq,
    maxEventAge: Duration.minutes(1),
    retryAttempts: 3,
    input: ScheduleTargetInput.fromObject({
        'payload': 'useful'
    }),
});

const schedule = new Schedule(this, 'Schedule', {
    schedule: ScheduleExpression.rate(Duration.hours(1)),
    target
});

启动 AWS 步函数

使用 StepFunctionsStartExecution 目标在步进函数上启动新的执行.

下面的代码片段创建了以 Step 函数为目标的事件规则 每隔一小时由 EventBridge 调度员用定制的有效载荷打电话.

import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
import * as tasks from 'aws-cdk-lib/aws-stepfunctions-tasks';

const payload = {
  Name: "MyParameter",
  Value: '🌥️',
};

const putParameterStep = new tasks.CallAwsService(this, 'PutParameter', {
  service: 'ssm',
  action: 'putParameter',
  iamResources: ['*'],
  parameters: {
    "Name.$": '$.Name',
    "Value.$": '$.Value',
    Type: 'String',
    Overwrite: true,
  },
});

const stateMachine = new sfn.StateMachine(this, 'StateMachine', {
  definitionBody: sfn.DefinitionBody.fromChainable(putParameterStep)
});

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(Duration.hours(1)),
  target: new targets.StepFunctionsStartExecution(stateMachine, {
    input: ScheduleTargetInput.fromObject(payload),
  }),
});

启动代码构建任务

使用 CodeBuildStartBuild 目标是在代码构建项目上启动一个新的构建运行.

下面的代码片段创建了一个以代码构建项目为目标的事件规则,即 由事件Bridge调度员每小时打电话.

import * as codebuild from 'aws-cdk-lib/aws-codebuild';

declare const project: codebuild.Project;

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(Duration.minutes(60)),
  target: new targets.CodeBuildStartBuild(project),
});

向 SQS 队列发送信件

使用 SqsSendMessage 目标向 SQS 队列发送消息.

下面的代码片段创建以 SQS 队列为目标的事件规则 每隔一小时由 EventBridge 调度员用定制的有效载荷打电话.

包含 messageGroupId 当目标为FIFO队列时使用。 如果您指定 a FIFO 队列作为目标,队列必须启用基于内容的分解.

const payload = 'test';
const messageGroupId = 'id';
const queue = new sqs.Queue(this, 'MyQueue', {
  fifo: true,
  contentBasedDeduplication: true,
});

const target = new targets.SqsSendMessage(queue, {
    input: ScheduleTargetInput.fromText(payload),
    messageGroupId,
});

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

向 Amazon SNS 专题发布消息

使用 SnsPublish 目标向亚马逊 SNS 专题发布消息.

下面的代码片段创建了以亚马逊 SNS 为目标的事件规则. 它每小时由亚马逊事件Bridge调度器使用自定义的有效载荷命名.

import * as sns from 'aws-cdk-lib/aws-sns';

const topic = new sns.Topic(this, 'Topic');

const payload = {
  message: 'Hello scheduler!',
};

const target = new targets.SnsPublish(topic, {
  input: ScheduleTargetInput.fromObject(payload),
});

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(Duration.hours(1)),
  target,
});

将事件发送到 EventBridge 事件总线

使用 EventBridgePutEvents 目标将事件发送到 EventBridge 事件总线.

下面的代码片段以 EventBridge 事件总线为目标创建事件规则 每小时由事件Bridge调度员用自定义事件有效载荷呼叫.

import * as events from 'aws-cdk-lib/aws-events';

const eventBus = new events.EventBus(this, 'EventBus', {
  eventBusName: 'DomainEvents',
});

const eventEntry: targets.EventBridgePutEventsEntry = {
  eventBus,
  source: 'PetService',
  detail: ScheduleTargetInput.fromObject({ Name: 'Fluffy' }),
  detailType: '🐶',
};

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(Duration.hours(1)),
  target: new targets.EventBridgePutEvents(eventEntry),
});

启动亚马逊检查员评估

使用 InspectorStartAssessmentRun 目标开始对检查专员进行评估.

下面的代码片段创建了一个事件规则,其中有一个评估模板作为目标,即 由事件Bridge调度员每小时打电话.

import * as inspector from 'aws-cdk-lib/aws-inspector';

declare const cfnAssessmentTemplate: inspector.CfnAssessmentTemplate;

const assessmentTemplate = inspector.AssessmentTemplate.fromCfnAssessmentTemplate(this, 'MyAssessmentTemplate', cfnAssessmentTemplate);

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(Duration.minutes(60)),
  target: new targets.InspectorStartAssessmentRun(assessmentTemplate),
});

给亚马逊 Kinesis 数据流记录

使用 KinesisStreamPutRecord 目标给亚马逊Kinesis数据流记录.

下面的代码片段创建以流为目标的事件规则 由事件Bridge调度员每小时打电话.

import * as kinesis from 'aws-cdk-lib/aws-kinesis';

const stream = new kinesis.Stream(this, 'MyStream');

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(Duration.minutes(60)),
  target: new targets.KinesisStreamPutRecord(stream, {
    partitionKey: 'key',
  }),
});

给亚马逊数据放唱片

使用 FirehosePutRecord 目标给亚马逊数据Firehose传送流录制.

下面的代码片段创建了以传送流为目标的事件规则 每隔一小时由 EventBridge 调度员用定制的有效载荷打电话.

import * as firehose from 'aws-cdk-lib/aws-kinesisfirehose';
declare const deliveryStream: firehose.IDeliveryStream;

const payload = {
  Data: "record",
};

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(Duration.minutes(60)),
  target: new targets.FirehosePutRecord(deliveryStream, {
    input: ScheduleTargetInput.fromObject(payload),
  }),
});

启动代码Pipeline执行

使用 CodePipelineStartPipelineExecution 目标开始代码Pipeline管道的新执行.

下面的代码片段创建了一个事件规则,以代码Pipeline管道作为目标,即 由事件Bridge调度员每小时打电话.

import * as codepipeline from 'aws-cdk-lib/aws-codepipeline';

declare const pipeline: codepipeline.Pipeline;

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(Duration.minutes(60)),
  target: new targets.CodePipelineStartPipelineExecution(pipeline),
});

启动 SageMaker 管道执行

使用 SageMakerStartPipelineExecution 目标为启动 SageMaker 管道的新执行.

下面的代码片段创建了以 SageMaker 管道为目标的事件规则,即 由事件Bridge调度员每小时打电话.

import * as sagemaker from 'aws-cdk-lib/aws-sagemaker';

declare const pipeline: sagemaker.IPipeline;

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(Duration.minutes(60)),
  target: new targets.SageMakerStartPipelineExecution(pipeline, {
    pipelineParameterList: [{
      name: 'parameter-name',
      value: 'parameter-value',
    }],
  }),
});

安排一个ECS任务运行

使用 EcsRunTask 目标为为集群运行的ECS任务.

下面的代码片段创建了一个事件规则,以远门任务定义和集群作为目标,由 EventBridge 调度器每小时调用.

import * as ecs from 'aws-cdk-lib/aws-ecs';

declare const cluster: ecs.ICluster;
declare const taskDefinition: ecs.FargateTaskDefinition;

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(cdk.Duration.minutes(60)),
  target: new targets.EcsRunFargateTask(cluster, {
    taskDefinition,
  }),
});

下面的代码片段创建了一个事件规则,以EC2任务定义并集群作为目标,由 EventBridge 调度器每小时调用.

import * as ecs from 'aws-cdk-lib/aws-ecs';

declare const cluster: ecs.ICluster;
declare const taskDefinition: ecs.Ec2TaskDefinition;

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(cdk.Duration.minutes(60)),
  target: new targets.EcsRunEc2Task(cluster, {
    taskDefinition,
  }),
});

启动更宽的 AWS API

使用 Universal 目标引用 AWS API。 见 https://docs.aws.amazon.com/cheduler/latest/UserGuide/managing-targets-universal.html 互联网档案馆的存檔,存档日期2013-12-12

下面的代码片段以 AWS API 作为目标创建事件规则 每天午夜由事件Bridge调度员打电话来.

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.cron({
    minute: '0',
    hour: '0',
  }),
  target: new targets.Universal({
    service: 'rds',
    action: 'stopDBCluster',
    input: ScheduleTargetInput.fromObject({
      DbClusterIdentifier: 'my-db',
    }),
  }),
});

这个 service 必须是小写和 action 一定是在骆驼场.

默认情况下,从API调用中提取出调度器的IAM政策. 政策中的行动是使用下列方法构建的: service 财务报告和审定财务报表 action 道具 (英语). 重新利用上述例子,将采取行动 rds:stopDBCluster。请注意,并非所有的IAM行动都遵循同样的模式。 在这种情况下,请使用 policyStatements 覆盖策略的道具 :

new Schedule(this, 'Schedule', {
  schedule: ScheduleExpression.rate(Duration.minutes(60)),
  target: new targets.Universal({
    service: 'sqs',
    action: 'sendMessage',
    policyStatements: [
      new iam.PolicyStatement({
        actions: ['sqs:SendMessage'],
        resources: ['arn:aws:sqs:us-east-1:123456789012:my_queue'],
      }),
      new iam.PolicyStatement({
        actions: ['kms:Decrypt', 'kms:GenerateDataKey*'],
        resources: ['arn:aws:kms:us-east-1:123456789012:key/0987dcba-09fe-87dc-65ba-ab0987654321'],
      }),
    ],
  }),
});

注:默认策略用途 * 在资源字段中,由于CDK没有自动发现所需资源许可的直线前进方式. 建议你们把实地缩小到具体的资源范围内,以便有更好的安全态势.

版本与发布记录

@aws-cdk/aws-scheduler-targets-alpha 共发布 136 个版本,首次发布于 2023/09/02;过去 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-targets-alpha 的常见问题

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

此模块被贬值. 现在,所有建筑均可在aws-cdk-lib/aws-schedler-targets下使用.注意:该包已被作者标记为弃用——This package has been stabilized and moved to aws-cdk-lib

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

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

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

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

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

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

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

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

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

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

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

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

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

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