# @aws-cdk/aws-events-targets 中文文档

规范地址：https://npmcn.com/package/%40aws-cdk/aws-events-targets/

版本：1\.204\.0
npm 元数据更新时间：2023-11-21T10:15:22.562Z
中文译文更新时间：2026-11-07T12:02:20.338Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aws-cdk/aws-events-targets
原文对照：https://npmcn.com/package/%40aws-cdk/aws-events-targets/?lang=original
项目主页：https://github.com/aws/aws-cdk
源码仓库：https://github.com/aws/aws-cdk

弃用说明：AWS CDK v1 has reached End-of-Support on 2023-06-01\. This package is no longer being updated, and users should migrate to AWS CDK v2\. For more information on how to migrate, see https://docs\.aws\.amazon\.com/cdk/v2/guide/migrating-v2\.html

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：687 kB，56 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 14\.15\.0
- 运行依赖：20 个
- peer 依赖：@aws-cdk/aws-apigateway 1\.204\.0，@aws-cdk/aws-autoscaling 1\.204\.0，@aws-cdk/aws-codebuild 1\.204\.0，@aws-cdk/aws-codepipeline 1\.204\.0，@aws-cdk/aws-ec2 1\.204\.0，@aws-cdk/aws-ecs 1\.204\.0，@aws-cdk/aws-events 1\.204\.0，@aws-cdk/aws-iam 1\.204\.0，@aws-cdk/aws-kinesis 1\.204\.0，@aws-cdk/aws-kinesisfirehose 1\.204\.0，@aws-cdk/aws-kms 1\.204\.0，@aws-cdk/aws-lambda 1\.204\.0，@aws-cdk/aws-logs 1\.204\.0，@aws-cdk/aws-sns 1\.204\.0，@aws-cdk/aws-sns-subscriptions 1\.204\.0，@aws-cdk/aws-sqs 1\.204\.0，@aws-cdk/aws-stepfunctions 1\.204\.0，@aws-cdk/core 1\.204\.0，@aws-cdk/custom-resources 1\.204\.0，constructs ^3\.3\.69
- 首次发布：2019-04-22T21:14:32.753Z
- 最新版本发布：2023-06-19T21:11:01.356Z
- 近 30 天下载量：100712（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：256（近 12 个月 0 个）

## 中文简介

亚马逊事件Bridge的事件目标

## 安装

```sh
npm install @aws-cdk/aws-events-targets
```

也可以使用：`pnpm add @aws-cdk/aws-events-targets`、`yarn add @aws-cdk/aws-events-targets`、`bun add @aws-cdk/aws-events-targets`

## README

# 亚马逊事件Bridge的事件目标

* * *

![End-of-Support](https://img.shields.io/badge/End--of--Support-critical.svg?style=for-the-badge)

> AWS CDK v1在2023-06-01上达到了支持结束. 此软件包不再更新,用户应该迁移到 AWS CDK v2.
> 
> 关于如何移徙的更多信息,请参见: [_移动到 AWS CDK v2_ 指南](https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html)。 。 。 .

* * *

此库包含将 Amazon EventBridge 发送给任意 支持的AWS服务数量。 这些班级的案例应当通过 页:1 `rule.addTarget()` 方法.

目前得到支持的有:

-   [启动代码构建](https://npmcn.com/package/%40aws-cdk/aws-events-targets/#readme-start-a-codebuild-build)
-   [启动编码管道](https://npmcn.com/package/%40aws-cdk/aws-events-targets/#readme-start-a-codepipeline-pipeline)
-   执行ECS任务
-   [启动 Lambda 函数](https://npmcn.com/package/%40aws-cdk/aws-events-targets/#readme-invoke-a-lambda-function)
-   [启动 API 网关 REST API](https://npmcn.com/package/%40aws-cdk/aws-events-targets/#readme-invoke-an-api-gateway-rest-api)
-   向 SNS 专题发布信件
-   发送消息到 SQS 队列
-   [启动 StepFuns 状态机器](https://npmcn.com/package/%40aws-cdk/aws-events-targets/#readme-start-a-stepfunctions-state-machine)
-   [执行批次任务](https://npmcn.com/package/%40aws-cdk/aws-events-targets/#readme-queue-a-batch-job)
-   调用 AWS API
-   将记录放入 Kinesis 流
-   [将事件登录到日志组](https://npmcn.com/package/%40aws-cdk/aws-events-targets/#readme-log-an-event-into-a-loggroup)
-   记录到 Kinesis 数据 Firehose 流
-   [把一个事件放在事件桥总线上](https://npmcn.com/package/%40aws-cdk/aws-events-targets/#readme-put-an-event-on-an-eventbridge-bus)
-   [发送事件到事件Bridge API 目标](https://npmcn.com/package/%40aws-cdk/aws-events-targets/#readme-invoke-an-api-destination)

参见 `@aws-cdk/aws-events` 用于获取更多信息的库 事件布莱奇.

## 事件重试策略并使用死字母队列

代码构建、代码Pipeline、Lambda、步骤功能、日志组和SQS等目标支持 [死信队列和设置重试策略](https://docs.aws.amazon.com/eventbridge/latest/userguide/rule-dlq.html)见 [羊肉的例子](https://npmcn.com/package/%40aws-cdk/aws-events-targets/#readme-invoke-a-lambda-function)。 。 。 . 使用 [逃生舱](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html) 用于其他目标类型.

## 启动 Lambda 函数

使用 `LambdaFunction` 目标以引用 lambda 函数.

下面的代码片段创建了以 Lambda 函数作为目标的事件规则 触发的每起事件 `aws.ec2` 来源. 您可以选择附加 [死信队列](https://docs.aws.amazon.com/eventbridge/latest/userguide/rule-dlq.html)。 。 。 .

```ts
import * as lambda from '@aws-cdk/aws-lambda';

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

const rule = new events.Rule(this, 'rule', {
  eventPattern: {
    source: ["aws.ec2"],
  },
});

const queue = new sqs.Queue(this, 'Queue');

rule.addTarget(new targets.LambdaFunction(fn, {
  deadLetterQueue: queue, // Optional: add a dead letter queue
  maxEventAge: cdk.Duration.hours(2), // Optional: set the maxEventAge retry policy
  retryAttempts: 2, // Optional: set the max number of retry attempts
}));
```

## 将事件登录到日志组

使用 `LogGroup` 目标可以在云表日志组中记录您的事件.

例如,以下代码片段创建了以Cloud Watch LogGroup为目标的事件规则. 每一起事件 `aws.ec2` 源将发送到云表日志组 .

```ts
import * as logs from '@aws-cdk/aws-logs';

const logGroup = new logs.LogGroup(this, 'MyLogGroup', {
  logGroupName: 'MyLogGroup',
});

const rule = new events.Rule(this, 'rule', {
  eventPattern: {
    source: ["aws.ec2"],
  },
});

rule.addTarget(new targets.CloudWatchLogGroup(logGroup));
```

## 启动代码构建

使用 `CodeBuildProject` 目标可触发代码构建项目.

下面的代码片段创建一个代码承诺寄存器, 触发一个代码构建项目 承诺在主分支。 您可以选择附加 [死信队列](https://docs.aws.amazon.com/eventbridge/latest/userguide/rule-dlq.html)。 。 。 .

```ts
import * as codebuild from '@aws-cdk/aws-codebuild';
import * as codecommit from '@aws-cdk/aws-codecommit';

const repo = new codecommit.Repository(this, 'MyRepo', {
  repositoryName: 'aws-cdk-codebuild-events',
});

const project = new codebuild.Project(this, 'MyProject', {
  source: codebuild.Source.codeCommit({ repository: repo }),
});

const deadLetterQueue = new sqs.Queue(this, 'DeadLetterQueue');

// trigger a build when a commit is pushed to the repo
const onCommitRule = repo.onCommit('OnCommit', {
  target: new targets.CodeBuildProject(project, {
    deadLetterQueue: deadLetterQueue,
  }),
  branches: ['master'],
});
```

## 启动编码管道

使用 `CodePipeline` 目标触发CodePipeline管道.

下面的代码片段创建了每时每刻被触发的代码管道

```ts
import * as codepipeline from '@aws-cdk/aws-codepipeline';

const pipeline = new codepipeline.Pipeline(this, 'Pipeline');

const rule = new events.Rule(this, 'Rule', {
  schedule: events.Schedule.expression('rate(1 hour)'),
});

rule.addTarget(new targets.CodePipeline(pipeline));
```

## 启动 StepFuns 状态机器

使用 `SfnStateMachine` 目标触发国家机器.

下面的代码片段创建了简单状态机器,每分钟用一个 假物体作为输入 . 您可以选择附加 [死信队列](https://docs.aws.amazon.com/eventbridge/latest/userguide/rule-dlq.html) 到目标.

```ts
import * as iam from '@aws-cdk/aws-iam';
import * as sfn from '@aws-cdk/aws-stepfunctions';

const rule = new events.Rule(this, 'Rule', {
  schedule: events.Schedule.rate(cdk.Duration.minutes(1)),
});

const dlq = new sqs.Queue(this, 'DeadLetterQueue');

const role = new iam.Role(this, 'Role', {
  assumedBy: new iam.ServicePrincipal('events.amazonaws.com'),
});
const stateMachine = new sfn.StateMachine(this, 'SM', {
  definition: new sfn.Wait(this, 'Hello', { time: sfn.WaitTime.duration(cdk.Duration.seconds(10)) })
});

rule.addTarget(new targets.SfnStateMachine(stateMachine, {
  input: events.RuleTargetInput.fromObject({ SomeParam: 'SomeValue' }),
  deadLetterQueue: dlq,
  role: role
}));
```

## 执行批次任务

使用 `BatchJob` 目标要排入批量任务.

下面的代码片段会创建一个简单的工作队列,该队列每小时以一个 假物体作为输入 . 您可以选择附加 [死信队列](https://docs.aws.amazon.com/eventbridge/latest/userguide/rule-dlq.html) 到目标.

```ts
import * as batch from '@aws-cdk/aws-batch';
import { ContainerImage } from '@aws-cdk/aws-ecs';

const jobQueue = new batch.JobQueue(this, 'MyQueue', {
  computeEnvironments: [
    {
      computeEnvironment: new batch.ComputeEnvironment(this, 'ComputeEnvironment', {
        managed: false,
      }),
      order: 1,
    },
  ],
});

const jobDefinition = new batch.JobDefinition(this, 'MyJob', {
  container: {
    image: ContainerImage.fromRegistry('test-repo'),
  },
});

const queue = new sqs.Queue(this, 'Queue');

const rule = new events.Rule(this, 'Rule', {
  schedule: events.Schedule.rate(cdk.Duration.hours(1)),
});

rule.addTarget(new targets.BatchJob(
  jobQueue.jobQueueArn,
  jobQueue,
  jobDefinition.jobDefinitionArn,
  jobDefinition, {
    deadLetterQueue: queue,
    event: events.RuleTargetInput.fromObject({ SomeParam: 'SomeValue' }),
    retryAttempts: 2,
    maxEventAge: cdk.Duration.hours(2),
  },
));
```

## 启动 API 网关 REST API

使用 `ApiGateway` 目标触发 REST API.

下面的代码片段创建了一个 Api Gateway REST API,每个小时都会被引用.

```ts
import * as api from '@aws-cdk/aws-apigateway';
import * as lambda from '@aws-cdk/aws-lambda';

const rule = new events.Rule(this, 'Rule', {
  schedule: events.Schedule.rate(cdk.Duration.minutes(1)),
});

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

const restApi = new api.LambdaRestApi( this, 'MyRestAPI', { handler: fn } );

const dlq = new sqs.Queue(this, 'DeadLetterQueue');

rule.addTarget(
  new targets.ApiGateway( restApi, {
    path: '/*/test',
    method: 'GET',
    stage:  'prod',
    pathParameterValues: ['path-value'],
    headerParameters: {
      Header1: 'header1',
    },
    queryStringParameters: {
      QueryParam1: 'query-param-1',
    },
    deadLetterQueue: dlq
  } ),
)
```

## 启动 API 目标

使用 `targets.ApiDestination` 目标可触发外部 API。 你必须要 创建一个 `events.Connection` 财务报告和审定财务报表 `events.ApiDestination` 还有.

下面的代码片段创建一个每小时被引用的外部目的地.

```ts
const connection = new events.Connection(this, 'Connection', {
  authorization: events.Authorization.apiKey('x-api-key', SecretValue.secretsManager('ApiSecretName')),
  description: 'Connection with API Key x-api-key',
});

const destination = new events.ApiDestination(this, 'Destination', {
  connection,
  endpoint: 'https://example.com',
  description: 'Calling example.com with API key x-api-key',
});

const rule = new events.Rule(this, 'Rule', {
  schedule: events.Schedule.rate(cdk.Duration.minutes(1)),
  targets: [new targets.ApiDestination(destination)],
});
```

## 把一个事件放在事件桥总线上

使用 `EventBus` 目标,以路径事件到不同的事件Bus.

下面的代码片段创建了预定事件规则,即将事件路由到导入的事件总线.

```ts
const rule = new events.Rule(this, 'Rule', {
  schedule: events.Schedule.expression('rate(1 minute)'),
});

rule.addTarget(new targets.EventBus(
  events.EventBus.fromEventBusArn(
    this,
    'External',
    `arn:aws:events:eu-west-1:999999999999:event-bus/test-bus`,
  ),
));
```

## 常见问题

### @aws-cdk/aws-events-targets 是什么？

亚马逊事件Bridge的事件目标注意：该包已被作者标记为弃用——AWS CDK v1 has reached End-of-Support on 2023-06-01\. This package is no longer being updated, and users should migrate to AWS CDK v2\. For more information on how to migrate, see https://docs\.aws\.amazon\.com/cdk/v2/guide/migrating-v2\.html

### 如何安装 @aws-cdk/aws-events-targets？

在项目目录运行 npm install @aws-cdk/aws-events-targets，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@aws-cdk/aws-apigateway（1\.204\.0）、@aws-cdk/aws-autoscaling（1\.204\.0）、@aws-cdk/aws-codebuild（1\.204\.0）、@aws-cdk/aws-codepipeline（1\.204\.0）、@aws-cdk/aws-ec2（1\.204\.0）、@aws-cdk/aws-ecs（1\.204\.0）、@aws-cdk/aws-events（1\.204\.0）、@aws-cdk/aws-iam（1\.204\.0）、@aws-cdk/aws-kinesis（1\.204\.0）、@aws-cdk/aws-kinesisfirehose（1\.204\.0）、@aws-cdk/aws-kms（1\.204\.0）、@aws-cdk/aws-lambda（1\.204\.0）、@aws-cdk/aws-logs（1\.204\.0）、@aws-cdk/aws-sns（1\.204\.0）、@aws-cdk/aws-sns-subscriptions（1\.204\.0）、@aws-cdk/aws-sqs（1\.204\.0）、@aws-cdk/aws-stepfunctions（1\.204\.0）、@aws-cdk/core（1\.204\.0）、@aws-cdk/custom-resources（1\.204\.0）、constructs（^3\.3\.69）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @aws-cdk/aws-events-targets 支持 TypeScript 吗？

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

### @aws-cdk/aws-events-targets 支持 ESM 还是 CommonJS？

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

### @aws-cdk/aws-events-targets 需要什么版本的 Node\.js？

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

### @aws-cdk/aws-events-targets 可以商用吗？

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

### @aws-cdk/aws-events-targets 的下载量有多少？

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

### @aws-cdk/aws-events-targets 还在维护吗？

最新版本 1\.204\.0 发布于 2023/06/20（3 年前）；至今共发布 256 个版本，其中过去 12 个月发布了 0 个；首次发布于 2019/04/23。作者已将其标记为弃用，新项目建议寻找替代方案。

