# @aws-cdk/mixins-preview 中文文档

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

版本：2\.275\.0-alpha\.0
npm 元数据更新时间：2026-10-26T19:19:25.737Z
中文译文更新时间：2026-11-07T15:18:08.946Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：6 MB，707 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 20\.0\.0
- 运行依赖：0 个
- peer 依赖：constructs ^10\.5\.0，aws-cdk-lib ^2\.275\.0
- 首次发布：2025-11-24T19:58:04.351Z
- 最新版本发布：2026-10-26T19:19:24.870Z
- 近 30 天下载量：9870（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：58（近 12 个月 58 个）

## 中文简介

CDK Mixins的预览 - 可相容,可再用可应用到任意构造(L1,L2或自定义)的抽象.

## 安装

```sh
npm install @aws-cdk/mixins-preview
```

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

## README

# CDK 混音器

> **说明**: 核心混合机制现已存在GA并可在 `constructs` 财务报告和审定财务报表 `aws-cdk-lib` (单位:千美元)`Mixins`, (中文(简体) ), `Mixin`, (中文(简体) ), `IMixin`, (中文(简体) ), `MixinApplicator`, (中文(简体) ), `ConstructSelector`) (中文(简体) ). 所有的服务Mixins现在都可以在 `aws-cdk-lib`。 。 。 . 请更新您的进口 .
> 
> 这个一揽子方案继续提供 **日志发送混合** 财务报告和审定财务报表 **事件布里奇事件**,这些仍然是实验性的.

* * *

![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)

> 本单元中更高层次的构件的API是实验性的并正在积极开发中. 在今后任何版本中,它们都须作非背向相容的修改或去除。 这些是 不适用 [语义版本](https://semver.org/) 模型和断开的更改 在发行笔记中宣布. 这意味着虽然你可能使用它们,但可能需要更新 当更新到此软件包的更新版本时,您的源代码.

* * *

CDK Mixins提供了一种新的,高级的方法来通过可相容抽象来添加功能. 与将所有特性捆绑在一起的传统L2构造不同,Mixins允许您选择并精确选择所需的构造能力. 在施工期间或施工后可以应用混合剂. 混音是一个 _添加数_, (中文(简体) ), _没有_ a 取代构造属性. 它们本身不能改变属性的可选性或改变违约.

## 使用和文件

见 [cDK Mixins 文档](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib-readme.html#mixins) 内 `aws-cdk-lib`。 。 。 .

### 内建混音

### 日志发送

配置用于支持资源到不同目的地的已修改日志:

```typescript
import * as cloudfrontMixins from '@aws-cdk/mixins-preview/aws-cloudfront/mixins';

// Create CloudFront distribution
declare const origin: s3.IBucket;
const distribution = new cloudfront.Distribution(scope, 'Distribution', {
  defaultBehavior: {
    origin: origins.S3BucketOrigin.withOriginAccessControl(origin),
  },
});

// Create log destination
const logGroup = new logs.LogGroup(scope, 'DeliveryLogGroup');

// Configure log delivery using the mixin
distribution
  .with(cloudfrontMixins.CfnDistributionLogsMixin.CONNECTION_LOGS.toLogGroup(logGroup, {
    outputFormat: cloudfrontMixins.CfnDistributionConnectionLogsOutputFormat.LogGroup.JSON,
    recordFields: [
      cloudfrontMixins.CfnDistributionConnectionLogsRecordFields.CONNECTIONSTATUS,
      cloudfrontMixins.CfnDistributionConnectionLogsRecordFields.CLIENTIP,
      cloudfrontMixins.CfnDistributionConnectionLogsRecordFields.SERVERIP,
      cloudfrontMixins.CfnDistributionConnectionLogsRecordFields.TLSPROTOCOL,
    ],
  }));
```

当提供预创建的目的地时, 配置支持资源的 vended 日志发送 :

```typescript
import * as cloudfrontMixins from '@aws-cdk/mixins-preview/aws-cloudfront/mixins';

// Create CloudFront distribution
declare const origin: s3.IBucket;
const distribution = new cloudfront.Distribution(scope, 'Distribution', {
  defaultBehavior: {
    origin: origins.S3BucketOrigin.withOriginAccessControl(origin),
  },
});

// Create destination bucket
const destBucket = new s3.Bucket(scope, 'DeliveryBucket');
// Add permissions to bucket to facilitate log delivery
const bucketPolicy = new s3.BucketPolicy(scope, 'DeliveryBucketPolicy', {
  bucket: destBucket,
  document: new iam.PolicyDocument(),
});
// Create S3 delivery destination for logs
const destination = new logs.CfnDeliveryDestination(scope, 'Destination', {
  destinationResourceArn: destBucket.bucketArn,
  name: 'unique-destination-name',
  deliveryDestinationType: 'S3',
});

distribution
  .with(cloudfrontMixins.CfnDistributionLogsMixin.CONNECTION_LOGS.toDestination(destination));
```

用于交叉账户交付的已修改日志配置(仅支持 S3 和 Firehose 目的地)

```typescript
import * as logDestinations from '@aws-cdk/mixins-preview/aws-logs';
import * as cloudfrontMixins from '@aws-cdk/mixins-preview/aws-cloudfront/mixins';

const destinationAccount = '123456789012';
const sourceAccount = '234567890123';
const region = 'us-east-1';

const app = new App();

const destStack = new Stack(app, 'destination-stack', {
  env: {
    account: destinationAccount,
    region,
  },
});

// Create destination bucket
const destBucket = new s3.Bucket(destStack, 'DeliveryBucket');
new logDestinations.S3DeliveryDestination(destStack, 'Destination', {
  bucket: destBucket,
  sourceAccountId: sourceAccount,
});

const sourceStack = new Stack(app, 'source-stack', {
  env: {
    account: sourceAccount,
    region,
  },
});

// Create CloudFront distribution
declare const origin: s3.IBucket;
const distribution = new cloudfront.Distribution(sourceStack, 'Distribution', {
  defaultBehavior: {
    origin: origins.S3BucketOrigin.withOriginAccessControl(origin),
  },
});

const destination = logs.CfnDeliveryDestination.fromDeliveryDestinationArn(sourceStack, 'Destination', `arn of Delivery Destination in destinationAccount`);

distribution
  .with(cloudfrontMixins.CfnDistributionLogsMixin.CONNECTION_LOGS.toDestination(destination));
```

* * *

## 事件桥事件模式

CDK Mixins为AWS资源自动生成已打出的事件Bridge事件模式. 这些图案有两种口味: **特定资源** 财务报告和审定财务报表 **独立**。 。 。 .

### 特定资源事件模式

特定资源模式是通过附加资源参考(如S3桶)来创建的. 资源标识符被自动注入到事件模式中,因此调用一个没有参数的模式方法仍然过滤出事件到该特定资源. 例如,一个S3 `objectCreatedPattern()` 将自动将桶名包含在图案中, 这意味着它只匹配来自该特定桶的事件 .

#### 事件模式基本用途

```typescript
import { BucketEvents } from '@aws-cdk/mixins-preview/aws-s3/events';
import * as events from 'aws-cdk-lib/aws-events';
import * as targets from 'aws-cdk-lib/aws-events-targets';

// Works with L2 constructs
const myBucket = new s3.Bucket(scope, 'Bucket');
const bucketEvents = BucketEvents.fromBucket(myBucket);
declare const fn: lambda.Function;

new events.Rule(scope, 'Rule', {
  eventPattern: bucketEvents.objectCreatedPattern({
    object: { key: events.Match.wildcard('uploads/*') },
  }),
  targets: [new targets.LambdaFunction(fn)]
});

// Also works with L1 constructs
const cfnBucket = new s3.CfnBucket(scope, 'CfnBucket');
const cfnBucketEvents = BucketEvents.fromBucket(cfnBucket);

new events.CfnRule(scope, 'CfnRule', {
  state: 'ENABLED',
  eventPattern: cfnBucketEvents.objectCreatedPattern({
    object: { key: events.Match.wildcard('uploads/*') },
  }),
  targets: [{ arn: fn.functionArn, id: 'L1' }]
});
```

#### 事件模式特征

```typescript
import { BucketEvents } from '@aws-cdk/mixins-preview/aws-s3/events';

const bucketEvents = BucketEvents.fromBucket(bucket);

// Bucket name is automatically injected from the bucket reference
const pattern = bucketEvents.objectCreatedPattern();
// pattern.detail.bucket.name === bucket.bucketName
```

**事件元数据支持**: 控制事件Bridge模式元数据

```typescript
import { BucketEvents } from '@aws-cdk/mixins-preview/aws-s3/events';
import * as events from 'aws-cdk-lib/aws-events';

const bucketEvents = BucketEvents.fromBucket(bucket);

const pattern = bucketEvents.objectCreatedPattern({
  eventMetadata: {
    region: events.Match.prefix('us-'),
    version: ['0']
  }
});
```

### 独立事件模式

独立模式不与任何特定资源挂钩。 它们与所有此类资源的活动相匹配。 例如,一个独立的 `AWSAPICallViaCloudTrail.eventPattern()` 与CloudTrail API的通话一致 账户里所有的S3桶 不只是一个特定的.

#### 事件模式基本用途

```typescript
import { AWSAPICallViaCloudTrail, ObjectCreated, ObjectDeleted } from '@aws-cdk/mixins-preview/aws-s3/events';
import * as events from 'aws-cdk-lib/aws-events';
import * as targets from 'aws-cdk-lib/aws-events-targets';

declare const fn: lambda.Function;

// Works with L2 Rule
new events.Rule(scope, 'Rule', {
  eventPattern: AWSAPICallViaCloudTrail.eventPattern({
    tlsDetails: { tlsVersion: ['TLSv1.3'] },
    eventMetadata: { region: ['us-east-1'] },
  }),
  targets: [new targets.LambdaFunction(fn)]
});

// Also works with L1 CfnRule
new events.CfnRule(scope, 'CfnRule', {
  state: 'ENABLED',
  eventPattern: AWSAPICallViaCloudTrail.eventPattern({
    tlsDetails: { tlsVersion: ['TLSv1.3'] },
    eventMetadata: { region: ['us-east-1'] },
  }),
  targets: [{ arn: fn.functionArn, id: 'L1' }]
});
```

#### 事件模式特征

```typescript
import { AWSAPICallViaCloudTrail } from '@aws-cdk/mixins-preview/aws-s3/events';

// Matches CloudTrail API calls across ALL S3 buckets
const pattern = AWSAPICallViaCloudTrail.eventPattern();
```

**事件元数据支持**: 控制事件Bridge模式元数据

```typescript
import { AWSAPICallViaCloudTrail } from '@aws-cdk/mixins-preview/aws-s3/events';
import * as events from 'aws-cdk-lib/aws-events';

const pattern = AWSAPICallViaCloudTrail.eventPattern({
  eventMetadata: {
    region: events.Match.prefix('us-'),
    version: ['0']
  }
});
```

### 可用事件

AWS Event Schema 登记簿中提供的EventBridge事件事件模式。 常见的例子:

**S3事件**数字 :

-   `ObjectCreated.eventPattern()` - 对象创建事件
-   `ObjectDeleted.eventPattern()` - 对象删除事件
-   `ObjectTagsAdded.eventPattern()` - 对象标记事件
-   `AWSAPICallViaCloudTrail.eventPattern()` - 云轨API电话

从服务特定模块导入事件 :

```typescript
// Resource-specific (filters to a specific bucket)
import { BucketEvents } from '@aws-cdk/mixins-preview/aws-s3/events';

// Standalone (matches across all buckets)
import { AWSAPICallViaCloudTrail, ObjectCreated, ObjectDeleted } from '@aws-cdk/mixins-preview/aws-s3/events';
```

## 常见问题

### @aws-cdk/mixins-preview 是什么？

CDK Mixins的预览 - 可相容,可再用可应用到任意构造\(L1,L2或自定义\)的抽象\.

### 如何安装 @aws-cdk/mixins-preview？

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

### @aws-cdk/mixins-preview 支持 TypeScript 吗？

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

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

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

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

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

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

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

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

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

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

最新版本 2\.275\.0-alpha\.0 发布于 2026/10/27（12 天前）；至今共发布 58 个版本，其中过去 12 个月发布了 58 个；首次发布于 2025/11/25。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

