# @aws-cdk/aws-mediapackagev2-alpha 中文文档

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

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

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

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

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

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

## 中文简介

用于 MediaPackageV2 的 CDK 构建库

## 安装

```sh
npm install @aws-cdk/aws-mediapackagev2-alpha
```

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

## README

# AWS: MediaPackageV2 构造库

* * *

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

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

* * *

## AWS 元素介质包 V2

MediaPackage在不担心容量的情况下提供高品质的视频,并更方便地执行流行的DVR功能,如重新开始,暂停,倒放等. 您的内容将在DRM的全面支持下得到保护. 该服务与其他AWS媒体服务无缝地融合为一套完整的基于云的视频处理和发送工具.

此套件包含与 AWS Elemental MediaPackage V2 合作的构造. 允许您定义 AWS Elemental MediaPackage V2 频道组,频道,源端点,频道政策和源端点政策.

关于AWS元素介质包V2的进一步信息,参见: [文件](https://aws.amazon.com/mediapackage/)。 。 。 .

以下示例创建了 AWS Elemental MediaPackage V2 频道组,频道和出处端点 :

```ts
declare const stack: Stack;
const group = new ChannelGroup(stack, 'MyChannelGroup', {
    channelGroupName: 'my-test-channel-group',
});

const channel = new Channel(stack, 'MyChannel', {
    channelGroup: group,
    channelName: 'my-testchannel',
    input: InputConfiguration.cmaf(),
});

const endpoint = new OriginEndpoint(stack, 'MyOriginEndpoint', {
    channel,
    originEndpointName: 'my-test-endpoint',
    segment: Segment.cmaf(),
    manifests: [Manifest.hls({
        manifestName: 'index',
    })],
});
```

## 使用工厂方法

```ts
declare const stack: Stack;

// Create a channel group
const group = new ChannelGroup(stack, 'MyChannelGroup', {
  channelGroupName: 'my-channel-group',
});

// Add a channel using the factory method
const channel = group.addChannel('MyChannel', {
  channelName: 'my-channel',
  input: InputConfiguration.cmaf(),
});

// Add an origin endpoint using the factory method
const endpoint = channel.addOriginEndpoint('MyEndpoint', {
  originEndpointName: 'my-endpoint',
  segment: Segment.cmaf(),
  manifests: [Manifest.hls({ manifestName: 'index' })],
});
```

## 频道组

一个频道组是顶级资源,由与之相关的频道和源端点组成.

以下代码创建了频道组 :

```ts
declare const stack: Stack;
const group = new ChannelGroup(stack, 'MyChannelGroup', {
    channelGroupName: 'my-test-channel-group',
});
```

以下代码使用名称属性导入已存在的频道组 :

```ts
declare const stack: Stack;
const channelGroup = ChannelGroup.fromChannelGroupAttributes(stack, 'ImportedChannelGroup', {
    channelGroupName: 'MyChannelGroup',
});
```

您也可以从自动提取名称和区域的 ARN 导入 :

```ts
declare const stack: Stack;
const channelGroup = ChannelGroup.fromChannelGroupArn(stack, 'ImportedChannelGroup',
    'arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/MyChannelGroup',
);
```

对于跨区域的进口,通过 `region` 确保正确的ARN构建的参数:

```ts
declare const stack: Stack;
const channelGroup = ChannelGroup.fromChannelGroupAttributes(stack, 'ImportedChannelGroup', {
    channelGroupName: 'MyChannelGroup',
    region: 'us-west-2',
});
```

## 频道

一个频道是频道组的一部分,代表一个内容流进入MediaPackage的切入点.

### 输入配置

通道支持两种输入类型:HLS和CMAF.

```ts
declare const stack: Stack;
declare const group: ChannelGroup;

const hlsChannel = new Channel(stack, 'HlsChannel', {
  channelGroup: group,
  input: InputConfiguration.hls(),
});

const cmafChannel = new Channel(stack, 'CmafChannel', {
  channelGroup: group,
  input: InputConfiguration.cmaf({
    inputSwitchConfiguration: {
      mqcsInputSwitching: true,
    },
    outputHeaders: [HeadersCMSD.MQCS],
  }),
});

const simpleCmafChannel = new Channel(stack, 'SimpleCmafChannel', {
  channelGroup: group,
  input: InputConfiguration.cmaf({
    outputHeaders: [HeadersCMSD.MQCS],
  }),
});
```

### 导入已有通道

以下代码使用名称属性导入一个已有信道:

```ts
declare const stack: Stack;
const channel = Channel.fromChannelAttributes(stack, 'ImportedChannel', {
    channelName: 'MyChannel',
    channelGroupName: 'MyChannelGroup',
});
```

您也可以从 ARN 导入 :

```ts
declare const stack: Stack;
const channel = Channel.fromChannelArn(stack, 'ImportedChannel',
    'arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/MyGroup/channel/MyChannel',
);
```

导入的频道曝光 a `region` 属性,从 ARN 解析或返回导入堆栈的区域.

### 频道资源政策

以下代码直接在频道上创建资源策略. 这个 将自动创建第一个调用的政策 :

```ts
declare const channel: Channel;
channel.addToResourcePolicy(new PolicyStatement({
    sid: 'AllowMediaLiveRoleToAccessEmpChannel',
    principals: [new ArnPrincipal('arn:aws:iam::AccountID:role/MediaLiveAccessRole')],
    effect: Effect.ALLOW,
    actions: ['mediapackagev2:PutObject'],
    resources: [channel.channelArn],
}));
```

## 来源终点

```ts
declare const stack: Stack;
declare const channel: Channel;
new OriginEndpoint(stack, 'myendpoint', {
    channel,
    originEndpointName: 'my-test-endpoint',
    segment: Segment.cmaf(),
    manifests: [
      Manifest.hls({
        manifestName: 'index',
      }),
    ],
});
```

以下代码使用名称属性导入了已有的源端点 :

```ts
declare const stack: Stack;
const originEndpoint = OriginEndpoint.fromOriginEndpointAttributes(stack, 'ImportedOriginEndpoint', {
    channelGroupName: 'MyChannelGroup',
    channelName: 'MyChannel',
    originEndpointName: 'MyExampleOriginEndpoint',
});
```

您也可以从 ARN 导入 :

```ts
declare const stack: Stack;
const originEndpoint = OriginEndpoint.fromOriginEndpointArn(stack, 'ImportedOriginEndpoint',
    'arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/MyGroup/channel/MyChannel/originEndpoint/MyEndpoint',
);
```

以下代码创建了来源端点的资源政策. 这个 将自动创建第一个调用的政策 :

```ts
declare const origin: OriginEndpoint;

origin.addToResourcePolicy(new PolicyStatement({
    sid: 'AllowRequestsFromCloudFront',
    principals: [new ServicePrincipal('cloudfront.amazonaws.com')],
    effect: Effect.ALLOW,
    actions: ['mediapackagev2:GetHeadObject', 'mediapackagev2:GetObject'],
    resources: [origin.originEndpointArn],
    conditions: {
      StringEquals: {
        'aws:SourceArn': 'arn:aws:cloudfront::123456789012:distribution/AAAAAAAAA',
      },
    },
}));
```

### CDN 授权

MediaPackage V2 支持两种方法将源端锁定到您的CDN:

-   **AWS 签名版本4(SigV4)** ——CDN用IAM标志请求 角色。 。 。 亚马逊云龙,见 [云纹融合](https://npmcn.com/package/%40aws-cdk/aws-mediapackagev2-alpha/#readme-cloudfront-integration)。 。 。 . 见 [SigV4 认证指南](https://docs.aws.amazon.com/mediapackage/latest/userguide/sig-v4-authenticating-requests.html)。 。 。 .
-   **基于标题的 CDN 授权** - CDN在其中附带一个共同的秘密 mediaPackage 验证的请求头 。 当您的CDN 时使用此选项 并不支持SigV4(英语:SigV4). 见 [CDN 授权指南](https://docs.aws.amazon.com/mediapackage/latest/userguide/cdn-auth.html)。 。 。 .

要配置基于信头的授权, 设置 `cdnAuth` 编辑 `OriginEndpoint` 道具来. L2自动创建端点策略有:

-   (单位:千美元) `PolicyStatement` 请求 `mediapackagev2:RequestHasMatchingCdnAuthHeader` 条件 `GetObject` 请求
-   页:1 `CdnAuthConfiguration` 块中引用机密和读取的角色

如果你不提供角色,一个由需要的秘密管理器创建 和 KMS 权限.

```ts
import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';

declare const channel: Channel;
declare const mySecret: secretsmanager.ISecret;

new OriginEndpoint(this, 'OriginEndpoint', {
  channel,
  segment: Segment.ts(),
  manifests: [Manifest.hls({ manifestName: 'index' })],
  cdnAuth: {
    secrets: [mySecret],
  },
});
```

你还可以打电话 `addToResourcePolicy()` 添加额外语句(例如a) 收割机允许使用);它们与自动创建的政策并列 相克语.

## 授予权限

### 给媒体提供方便

要允许 AWS 元素介质Live 将内容摄入媒体包频道,请使用 `grants.ingest()` 方法 :

```ts
declare const channel: Channel;
declare const mediaLiveRole: iam.IRole;

// Grant MediaLive permission to ingest content
channel.grants.ingest(mediaLiveRole);
```

### 云纹融合

MediaPackage起源端点被设计为与内容交付网络(CDN)如亚马逊CloudFront发行使用. CloudFront 为您提供缓存、 DDoS 保护以及全局内容发送服务 .

将 CloudFront 连接到 MediaPackage V2 端点的最简单方式是 `MediaPackageV2Origin`,它自动创建出源访问控制(OAC),并连接端点策略:

```ts
declare const endpoint: OriginEndpoint;
declare const group: ChannelGroup;

new cloudfront.Distribution(this, 'Distribution', {
  defaultBehavior: {
    origin: new MediaPackageV2Origin(endpoint, {
      channelGroup: group,
    }),
  },
});
```

此操作处理 OAC 创建, HTTPS 唯一来源配置, 以及允许 CloudFront 访问端点( 包括 `GetHeadObject` 用于支持MQAR).

为了进行更多的控制,您可以手动配置策略和 OAC :

```ts
declare const originEndpoint: OriginEndpoint;
declare const distribution: cloudfront.Distribution;

originEndpoint.addToResourcePolicy(new iam.PolicyStatement({
  sid: 'AllowCloudFrontServicePrincipal',
  principals: [new iam.ServicePrincipal('cloudfront.amazonaws.com')],
  effect: iam.Effect.ALLOW,
  actions: ['mediapackagev2:GetObject', 'mediapackagev2:GetHeadObject'],
  resources: [originEndpoint.originEndpointArn],
  conditions: {
    StringEquals: {
      'aws:SourceArn': distribution.distributionArn,
    },
  },
}));
```

> **毕业计划:** `MediaPackageV2Origin` 目前生活在这个α模块中. 当MediaPackage V2毕业生稳定后,它会转移到 `aws-cloudfront-origins` 并行 `S3BucketOrigin` 和其他出身的帮手.

## 显示配置

MediaPackage V2支持多种显示格式:HLS,Low-Latency HLS(LL-HLS),DASH,和微软平滑流(MSS).

### HLS 声明

```ts
declare const channel: Channel;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf(),
  manifests: [
    Manifest.hls({
      manifestName: 'index',
      manifestWindow: Duration.seconds(60),
      programDateTimeInterval: Duration.seconds(60),
      scteAdMarkerHls: AdMarkerHls.DATERANGE,
    }),
  ],
});
```

### 低密度 HLS 特性

```ts
declare const channel: Channel;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf(),
  manifests: [
    Manifest.lowLatencyHLS({
      manifestName: 'index',
      manifestWindow: Duration.seconds(30),
      programDateTimeInterval: Duration.seconds(5),
      childManifestName: 'child',
    }),
  ],
});
```

### DASH 宣言

```ts
declare const channel: Channel;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf(),
  manifests: [
    Manifest.dash({
      manifestName: 'index',
      manifestWindow: Duration.seconds(60),
      minBufferTime: Duration.seconds(30),
      minUpdatePeriod: Duration.seconds(10),
      segmentTemplateFormat: SegmentTemplateFormat.NUMBER_WITH_TIMELINE,
      periodTriggers: [
        DashPeriodTriggers.AVAILS,
        DashPeriodTriggers.DRM_KEY_ROTATION,
      ],
    }),
  ],
});
```

### MSS 宣言

```ts
declare const channel: Channel;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.ism(),
  manifests: [
    Manifest.mss({
      manifestName: 'index',
      manifestWindow: Duration.seconds(60),
      manifestLayout: MssManifestLayout.COMPACT,
    }),
  ],
});
```

### 多种表现形式

您可以为单个来源端点配置多个显示格式 :

```ts
declare const channel: Channel;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf(),
  manifests: [
    Manifest.hls({ manifestName: 'hls' }),
    Manifest.dash({ manifestName: 'dash' }),
  ],
});
```

| 片段类型 | 支持的运单 |
| --- | --- |
| 分会.cmaf( ) | HLS, LL- HLS, DASH 软件 |
| 区段.t () | HLS, LL- 高级 |
| 部分. ism( ) | 医务科 |

每个发源端都有一个单段配置. 如果您需要不同配置的片段,请在同一频道上使用多源端点.

@ 见 [https://docs.aws.amazon.com/mediapackage/latest/userguide/endpoints-create.html 页面存档备份,存于互联网档案馆](https://docs.aws.amazon.com/mediapackage/latest/userguide/endpoints-create.html)

## 显示过滤

显式过滤器控制表内包含哪些变体. 过滤器类型安全,并对照 [媒体包单过滤规则](https://docs.aws.amazon.com/mediapackage/latest/userguide/manifest-filter-query-parameters.html)。 。 。 .

| 过滤器 | 方法 |
| --- | --- |
| 音频/ 视频比特率 | `bitrate()`, (中文(简体) ), `bitrateRange()`, (中文(简体) ), `bitrateCombo()` |
| 音频频道、样本率、视频高度、帧率、游戏高度 | `numeric()`, (中文(简体) ), `numericList()`, (中文(简体) ), `numericRange()`, (中文(简体) ), `numericCombo()` |
| 音频编码器 | `audioCodec()`, (中文(简体) ), `audioCodecList()` |
| 视频编码c | `videoCodec()`, (中文(简体) ), `videoCodecList()` |
| 视频动态范围 | `videoDynamicRange()`, (中文(简体) ), `videoDynamicRangeList()` |
| 剧本类型 | `trickplayType()`, (中文(简体) ), `trickplayTypeList()` |
| 音频/字幕语言 | `text()`, (中文(简体) ), `textList()` |
| 高级图案 | `custom()` |

以下例子创建了HD流式端点,仅服务于1至5 Mbps之间的H.264/H.265内容并有英语或法语的立体声

```ts
declare const channel: Channel;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf(),
  manifests: [
    Manifest.hls({
      manifestName: 'index',
      filterConfiguration: {
        manifestFilter: [
          ManifestFilter.bitrateRange(BitrateFilterKey.VIDEO_BITRATE, Bitrate.mbps(1), Bitrate.mbps(5)),
          ManifestFilter.numericRange(NumericFilterKey.VIDEO_HEIGHT, 720, 1080),
          ManifestFilter.videoCodecList([VideoCodec.H264, VideoCodec.H265]),
          ManifestFilter.numeric(NumericFilterKey.AUDIO_CHANNELS, 2),
          ManifestFilter.textList(TextFilterKey.AUDIO_LANGUAGE, ['en-US', 'fr']),
        ],
        timeDelay: Duration.seconds(30),
      },
    }),
  ],
});
```

对于结合范围值和单一值的高级模式,使用 `numericCombo()` 或者说 `bitrateCombo()`数字 :

```ts
declare const channel: Channel;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf(),
  manifests: [
    Manifest.hls({
      manifestName: 'index',
      filterConfiguration: {
        manifestFilter: [
          // video_height:240-360,720-1080,1440
          ManifestFilter.numericCombo(NumericFilterKey.VIDEO_HEIGHT, [
            NumericExpression.range(240, 360),
            NumericExpression.range(720, 1080),
            NumericExpression.value(1440),
          ]),
        ],
      },
    }),
  ],
});
```

### DRM 设置

您可以使用 HLS 和 LL- HLS 多变量播放列表排除会话密钥 `drmSettings` 过滤器配置 。 这改善了与遗留的 HLS 客户端的相容性,并提供了更多的颗粒式访问控制:

```ts
declare const channel: Channel;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf(),
  manifests: [
    Manifest.hls({
      manifestName: 'index',
      filterConfiguration: {
        drmSettings: [DrmSettingsKey.EXCLUDE_SESSION_KEYS],
      },
    }),
  ],
});
```

## 开始标签配置

配置 HLS 和 LL- HLS 列表中使用 EXT- X- START 标记开始播放的地方 :

```ts
declare const channel: Channel;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf(),
  manifests: [
    Manifest.hls({
      manifestName: 'index',
      startTag: StartTag.of(10),
    }),
  ],
});
```

## 部件配置

配置原端点的分区设置 .

```ts
declare const channel: Channel;

new OriginEndpoint(this, 'TsEndpoint', {
  channel,
  segment: Segment.ts({
    duration: Duration.seconds(6),
    name: 'segment',
    includeDvbSubtitles: true,
    useAudioRenditionGroup: true,
    includeIframeOnlyStreams: false,
    scteFilter: [
      ScteMessageType.BREAK,
      ScteMessageType.DISTRIBUTOR_ADVERTISEMENT,
    ],
  }),
  manifests: [Manifest.hls({ manifestName: 'index' })],
});

new OriginEndpoint(this, 'CmafEndpoint', {
  channel,
  segment: Segment.cmaf({
    duration: Duration.seconds(6),
    name: 'segment',
    includeIframeOnlyStreams: true,
    scteFilter: [ScteMessageType.DISTRIBUTOR_ADVERTISEMENT],
  }),
  manifests: [Manifest.hls({ manifestName: 'index' })],
});

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf(),
  manifests: [Manifest.hls({ manifestName: 'index' })],
});
```

## 加密和DRM

使用 SPEKE( 安全包件和编码器密钥交换) 加密保护您的内容 。 每个容器类型都有自己的加密类,有类型安全选项:

### CMAF 加密

```ts
declare const channel: Channel;
declare const spekeRole: iam.IRole;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf({
    encryption: CmafEncryption.speke({
      method: CmafEncryptionMethod.CBCS,
      drmSystems: [CmafDrmSystem.FAIRPLAY, CmafDrmSystem.WIDEVINE],
      resourceId: 'my-content-id',
      url: 'https://example.com/speke',
      role: spekeRole,
      keyRotationInterval: Duration.seconds(300),
      audioPreset: PresetSpeke20Audio.PRESET_AUDIO_2,
      videoPreset: PresetSpeke20Video.PRESET_VIDEO_2,
    }),
  }),
  manifests: [Manifest.hls({ manifestName: 'index' })],
});
```

### TS 加密

```ts
declare const channel: Channel;
declare const spekeRole: iam.IRole;

new OriginEndpoint(this, 'TsEndpoint', {
  channel,
  segment: Segment.ts({
    encryption: TsEncryption.speke({
      method: TsEncryptionMethod.SAMPLE_AES,
      resourceId: 'my-content-id',
      url: 'https://example.com/speke',
      role: spekeRole,
    }),
  }),
  manifests: [Manifest.hls({ manifestName: 'index' })],
});
```

TS 加密默认基于方法的 DRM 系统: FairPlay for `SAMPLE_AES`,用于 `AES_128`。您可以用 `drmSystems` 使用属性 `TsDrmSystem`。 。 。 .

### 内容密钥加密

您可以通过提供导入到 AWS 证书管理器的证书来添加内容密钥加密 。 您的 DRM 密钥提供者必须支持内容密钥加密才能工作 :

```ts
declare const channel: Channel;
declare const spekeRole: iam.IRole;
declare const certificate: certificatemanager.ICertificate;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf({
    encryption: CmafEncryption.speke({
      method: CmafEncryptionMethod.CBCS,
      drmSystems: [CmafDrmSystem.FAIRPLAY],
      resourceId: 'my-content-id',
      url: 'https://example.com/speke',
      role: spekeRole,
      certificate,
    }),
  }),
  manifests: [Manifest.hls({ manifestName: 'index' })],
});
```

### 不包括部分 DRM 元数据

对于CMAF内容,您可以将 DRM 元数据从片段中排除:

```ts
declare const channel: Channel;
declare const spekeRole: iam.IRole;

new OriginEndpoint(this, 'Endpoint', {
  channel,
  segment: Segment.cmaf({
    encryption: CmafEncryption.speke({
      method: CmafEncryptionMethod.CBCS,
      drmSystems: [CmafDrmSystem.FAIRPLAY],
      resourceId: 'my-content-id',
      url: 'https://example.com/speke',
      role: spekeRole,
      excludeSegmentDrmMetadata: true,
    }),
  }),
  manifests: [Manifest.hls({ manifestName: 'index' })],
});
```

### ISM( 流出) 加密

ISM端点使用带有PlayReady的CENC加密. 音频和视频预设总是 `SHARED`,则不支持密钥旋转。 DRM 系统默认为 PlayReady :

```ts
declare const channel: Channel;
declare const spekeRole: iam.IRole;

new OriginEndpoint(this, 'IsmEndpoint', {
  channel,
  segment: Segment.ism({
    encryption: IsmEncryption.speke({
      resourceId: 'my-content-id',
      url: 'https://example.com/speke',
      role: spekeRole,
    }),
  }),
  manifests: [Manifest.mss({ manifestName: 'index' })],
});
```

## 云表计量

MediaPackage V2资源披露了用于监测的"云表"计量标准. 您可以使用这些参数创建提醒和仪表板:

```ts
declare const channelGroup: ChannelGroup;
declare const channel: Channel;
declare const endpoint: OriginEndpoint;

// Create a CloudWatch alarm on channel group egress bytes
const alarm = channelGroup.metricEgressBytes().createAlarm(this, 'HighEgress', {
  threshold: 1000,
  evaluationPeriods: 1,
});

// Monitor channel ingress response time
channel.metricIngressResponseTime().createAlarm(this, 'SlowIngress', {
  threshold: 1000,
  evaluationPeriods: 2,
});

// Track origin endpoint request count
const requestMetric = endpoint.metricEgressRequestCount({
  statistic: 'sum',
  period: Duration.minutes(5),
});
```

现有衡量标准包括:

-   `metricIngressBytes()` - 摄入的字节
-   `metricEgressBytes()` - 已发送字节
-   `metricIngressResponseTime()` - 入侵反应时间(平均)
-   `metricEgressResponseTime()` - 侵略反应时间(平均)
-   `metricIngressRequestCount()` - 入侵请求的数目
-   `metricEgressRequestCount()` - 请求入侵的次数

所有衡量标准都支持用于自定义周期、统计和维度的标准 " 云表观察 " 计量选项.

## 常见问题

### @aws-cdk/aws-mediapackagev2-alpha 是什么？

用于 MediaPackageV2 的 CDK 构建库

### 如何安装 @aws-cdk/aws-mediapackagev2-alpha？

在项目目录运行 npm install @aws-cdk/aws-mediapackagev2-alpha，或使用 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/aws-mediapackagev2-alpha 支持 TypeScript 吗？

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

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

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

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

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

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

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

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

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

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

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

