@aws-cdk/aws-mediapackagev2-alpha

中文文档
2.275.0-alpha.0发布于 2026/10/27Apache-2.0TypeScriptCommonJS零依赖近 30 天下载 2858

用于 MediaPackageV2 的 CDK 构建库

中文使用文档
文档目录29 节
  1. AWS 元素介质包 V2
  2. 使用工厂方法
  3. 频道组
  4. 频道
  5. 输入配置
  6. 导入已有通道
  7. 频道资源政策
  8. 来源终点
  9. CDN 授权
  10. 授予权限
  11. 给媒体提供方便
  12. 云纹融合
  13. 显示配置
  14. HLS 声明
  15. 低密度 HLS 特性
  16. DASH 宣言
  17. MSS 宣言
  18. 多种表现形式
  19. 显示过滤
  20. DRM 设置
  21. 开始标签配置
  22. 部件配置
  23. 加密和DRM
  24. CMAF 加密
  25. TS 加密
  26. 内容密钥加密
  27. 不包括部分 DRM 元数据
  28. ISM( 流出) 加密
  29. 云表计量

AWS: MediaPackageV2 构造库


cdk-constructs: Experimental

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


AWS 元素介质包 V2

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

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

关于AWS元素介质包V2的进一步信息,参见: 文件。 。 。 .

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

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',
    })],
});

使用工厂方法

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' })],
});

频道组

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

以下代码创建了频道组 :

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

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

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

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

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

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

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

频道

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

输入配置

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

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],
  }),
});

导入已有通道

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

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

您也可以从 ARN 导入 :

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

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

频道资源政策

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

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],
}));

来源终点

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',
      }),
    ],
});

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

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

您也可以从 ARN 导入 :

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

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

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标志请求 角色。 。 。 亚马逊云龙,见 云纹融合。 。 。 . 见 SigV4 认证指南。 。 。 .
  • 基于标题的 CDN 授权 - CDN在其中附带一个共同的秘密 mediaPackage 验证的请求头 。 当您的CDN 时使用此选项 并不支持SigV4(英语:SigV4). 见 CDN 授权指南。 。 。 .

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

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

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

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() 方法 :

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),并连接端点策略:

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 :

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 声明

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 特性

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 宣言

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 宣言

declare const channel: Channel;

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

多种表现形式

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

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 页面存档备份,存于互联网档案馆

显示过滤

显式过滤器控制表内包含哪些变体. 过滤器类型安全,并对照 媒体包单过滤规则。 。 。 .

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

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

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()数字 :

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 客户端的相容性,并提供了更多的颗粒式访问控制:

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 标记开始播放的地方 :

declare const channel: Channel;

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

部件配置

配置原端点的分区设置 .

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 加密

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 加密

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 密钥提供者必须支持内容密钥加密才能工作 :

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 元数据从片段中排除:

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 :

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资源披露了用于监测的"云表"计量标准. 您可以使用这些参数创建提醒和仪表板:

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 共发布 34 个版本,首次发布于 2026/04/02;过去 12 个月发布了 34 个版本。

版本发布日期距今
2.275.0-alpha.0latest2026/10/2712 天前
2.274.0-alpha.02026/10/2018 天前
2.273.0-alpha.02026/10/0930 天前
2.272.0-alpha.02026/09/301 个月前
2.271.0-alpha.02026/09/261 个月前
2.270.0-alpha.02026/09/181 个月前

关于 @aws-cdk/aws-mediapackagev2-alpha 的常见问题

@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 和提交记录判断。