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

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

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

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

原始 npm 页面：https://www.npmjs.com/package/%40aws-cdk/aws-events
原文对照：https://npmcn.com/package/%40aws-cdk/aws-events/?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 元数据）

- 包体积（解压后）：2 MB，40 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 14\.15\.0
- 运行依赖：3 个
- peer 依赖：@aws-cdk/aws-iam 1\.204\.0，@aws-cdk/core 1\.204\.0，constructs ^3\.3\.69
- 首次发布：2018-07-31T13:34:56.034Z
- 最新版本发布：2023-06-19T21:05:29.054Z
- 近 30 天下载量：411761（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：288（近 12 个月 0 个）

## 中文简介

亚马逊事件Bridge 构造库

## 安装

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

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

## 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资源的变化. 例如,一个 AWS 代码Pipeline 发送 [状态 变动](https://docs.aws.amazon.com/eventbridge/latest/userguide/event-types.html#codepipeline-event-type) 当管道改变状态时.

-   **活动**: 一个事件表示您的 AWS 环境有变化 。 AWS 资源 可以在状态变化时生成事件。 例如,亚马逊EC2 当 EC2 实例状态从待决状态变为 运行中,而 Amazon EC2 自动缩放在启动时生成事件或 终止实例。 AWS CloudTrail 发布事件时会给API打电话. 您可以生成自定义的应用程序关卡事件并将其发布到 事件布莱奇。 您也可以设置在 : a 定期计算。 关于生成事件的服务清单和样本 每个服务的事件,见 [事件桥事件实例 支助 服务](https://docs.aws.amazon.com/eventbridge/latest/userguide/event-types.html)。 。 。 .
-   **目标**: 一个目标进程事件。 目标可包括亚马逊EC2 实例、 AWS Lambda 函数、 Kinesis 流、 Amazon ECS 任务、 Step 函数状态机器 亚马逊 SNS 主题 亚马逊 SQS 队列 亚马逊 Cloud Watch Log Groups 和内置 目标。 一个目标以JSON格式接收事件.
-   **规则**: 一条规则,将即将到来的事件匹配,并将它们引导到目标 处理。 一条规则可以通向多个目标,所有目标都是 平行处理。 规则不按特定顺序处理。 这个 使一个组织的不同部分能够寻找和处理事件 这是他们感兴趣的。 规则可以自定义 JSON 发送到 目标,仅通过某些部分或用常数覆盖.
-   **事件说明**: 活动总线可以从自定义应用程序接收事件 也可以从AWS SaaS合作伙伴创建的应用程序和服务接收事件. 见 [创建事件总线](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-event-bus.html)。 。 。 .

## 规则

这个 `Rule` 构造定义用于监视 基于一个 [事件 模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/filtering-examples-structure.html) 并援引 **事件目标** 当图案匹配到触发时 活动。 事件目标是指执行 `IRuleTarget` 接口.

通常你会使用其中一种 `source.onXxx(name[, target[, options]]) -> Rule` 关于事件源的方法,用于定义与 具体的活动。 您可以通过道具瞄准目标, 或者使用 `rule.addTarget`。 。 。 .

例如,定义一个规则,该规则将在一个 承诺被推到代码承诺存储器的"主"分支:

```ts
declare const repo: codecommit.Repository;
declare const project: codebuild.Project;

const onCommitRule = repo.onCommit('OnCommit', {
  target: new targets.CodeBuildProject(project),
  branches: ['master']
});
```

您可以添加附加目标, 可选 [投入 变压器](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_InputTransformer.html) 使用 `eventRule.addTarget(target[, input])`。例如,我们可以添加一个 SNS 用于格式化可读消息的主题目标.

例如,这增加了一个SNS主题作为目标:

```ts
declare const onCommitRule: events.Rule;
declare const topic: sns.Topic;

onCommitRule.addTarget(new targets.SnsTopic(topic, {
  message: events.RuleTargetInput.fromText(
    `A commit was pushed to the repository ${codecommit.ReferenceEvent.repositoryName} on branch ${codecommit.ReferenceEvent.referenceName}`
  )
}));
```

或使用对象 :

```ts
declare const onCommitRule: events.Rule;
declare const topic: sns.Topic;

onCommitRule.addTarget(new targets.SnsTopic(topic, {
  message: events.RuleTargetInput.fromObject(
    {
      DataType: `custom_${events.EventField.fromPath('$.detail-type')}`
    }
  )
}));
```

## 时间安排

您可以配置规则以运行在时间表( cron 或 rate) 上 . 收费标准必须在分钟、小时或天内规定.

以下例子每天凌晨4点执行一个任务:

```ts
import { Rule, Schedule } from '@aws-cdk/aws-events';
import { EcsTask } from '@aws-cdk/aws-events-targets';
import { Cluster, TaskDefinition } from '@aws-cdk/aws-ecs';
import { Role } from '@aws-cdk/aws-iam';

declare const cluster: Cluster;
declare const taskDefinition: TaskDefinition;
declare const role: Role;

const ecsTaskTarget = new EcsTask({ cluster, taskDefinition, role });

new Rule(this, 'ScheduleRule', {
 schedule: Schedule.cron({ minute: '0', hour: '4' }),
 targets: [ecsTaskTarget],
});
```

如果您想要指定 Fargate 平台版本, 请设定 `platformVersion` 在 EcsTask 的道具中,例如:

```ts
declare const cluster: ecs.Cluster;
declare const taskDefinition: ecs.TaskDefinition;
declare const role: iam.Role;

const platformVersion = ecs.FargatePlatformVersion.VERSION1_4;
const ecsTaskTarget = new targets.EcsTask({ cluster, taskDefinition, role, platformVersion });
```

## 事件目标

这个 `@aws-cdk/aws-events-targets` 模块包括执行 `IRuleTarget` 用于各种 AWS 服务的接口.

支持下列目标:

-   `targets.CodeBuildProject`: 启动 AWS 代码构建
-   `targets.CodePipeline`: 启动 AWS 代码管道执行
-   `targets.EcsTask`: 在 Amazon ECS 集群上启动任务
-   `targets.LambdaFunction`: 启动 AWS Lambda 函数
-   `targets.SnsTopic`: 发布到 SNS 主题
-   `targets.SqsQueue`: 向 Amazon SQS 队列发送消息
-   `targets.SfnStateMachine`: 触发 AWS 步骤函数状态机
-   `targets.BatchJob`: 队列 AWS 批次任务
-   `targets.AwsApi`: 给 AWS API 打电话
-   `targets.ApiGateway`: 启动 AWS API 网关
-   `targets.ApiDestination`: 给外部目的地打电话

### 跨账户和跨区域目标

可以将事件源头和一个目标分别放在单独的AWS账户和区域内:

```ts
import { App, Stack } from '@aws-cdk/core';
import * as codebuild from '@aws-cdk/aws-codebuild';
import * as codecommit from '@aws-cdk/aws-codecommit';
import * as targets from '@aws-cdk/aws-events-targets';

const app = new App();

const account1 = '11111111111';
const account2 = '22222222222';

const stack1 = new Stack(app, 'Stack1', { env: { account: account1, region: 'us-west-1' } });
const repo = new codecommit.Repository(stack1, 'Repository', {
  repositoryName: 'myrepository',
});

const stack2 = new Stack(app, 'Stack2', { env: { account: account2, region: 'us-east-1' } });
const project = new codebuild.Project(stack2, 'Project', {
  // ...
});

repo.onCommit('OnCommit', {
  target: new targets.CodeBuildProject(project),
});
```

在这种情况下,丹麦中央银行将把两个帐户合并起来:

-   它会在源堆栈中生成一条规则, 将目标账户的事件总线作为目标
-   它将在目标堆栈中生成一个规则, 并附带提供的目标
-   它会生成一个单独的堆栈, 允许源账户发布事件 到指定区域目标账户的事件总线, 并确保在源文件堆栈之前部署

更多信息,请参见 [AWS 关于交叉账户事件的文件](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-cross-account-event-delivery.html)。 。 。 .

## 存档

可以将发送到活动总线的全部或部分事件存档. 然后有可能 [重放这些事件](https://aws.amazon.com/blogs/aws/new-archive-and-replay-events-with-amazon-eventbridge/)。 。 。 .

```ts
const bus = new events.EventBus(this, 'bus', {
  eventBusName: 'MyCustomEventBus'
});

bus.archive('MyArchive', {
  archiveName: 'MyCustomEventBusArchive',
  description: 'MyCustomerEventBus Archive',
  eventPattern: {
    account: [Stack.of(this).account],
  },
  retention: Duration.days(365),
});
```

## 授予已存在的事件Bus PutEvents

要将已有的事件Bus导入您的 CDK 应用程序, 请使用 `EventBus.fromEventBusArn`, (中文(简体) ), `EventBus.fromEventBusAttributes` 或者说 `EventBus.fromEventBusName` 工厂方法.

那么,你可以使用这个 `grantPutEventsTo` 发放方法 `event:PutEvents` 到活动Bus.

```ts
declare const lambdaFunction: lambda.Function;

const eventBus = events.EventBus.fromEventBusArn(this, 'ImportedEventBus', 'arn:aws:events:us-east-1:111111111:event-bus/my-event-bus');

// now you can just call methods on the eventbus
eventBus.grantPutEventsTo(lambdaFunction);
```

## 常见问题

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

亚马逊事件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？

在项目目录运行 npm install @aws-cdk/aws-events，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@aws-cdk/aws-iam（1\.204\.0）、@aws-cdk/core（1\.204\.0）、constructs（^3\.3\.69）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

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

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

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

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

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

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

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

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

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

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

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

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

