

# 使用 CloudFront 和 AWS Media Services 提供视频流
<a name="live-streaming"></a>

要将 AWS Media Services 与 CloudFront 配合用于向全球观众传输实时内容，请参阅以下指南。

使用 [AWS Elemental MediaLive](https://docs.aws.amazon.com/medialive/latest/ug/getting-started.html) 实时编码实时视频流。要对大型视频流进行编码，MediaLive 将其压缩为可分配给查看器的较小版本（*编码*）。

压缩实时视频流后，您可以使用以下两个主要选项之一来准备和提供内容：
+ **将内容转换为所需的格式，然后提供内容** – 如果您需要多种格式的内容，请使用 [AWS Elemental MediaPackage](https://aws.amazon.com/mediapackage/) 针对不同设备类型打包内容。当您打包内容时，您还可以实施额外的特征并添加数字版权管理 (DRM)，以防止未经授权使用您的内容。有关使用 CloudFront 提供 MediaPackage 格式化的内容的分步说明，请参阅[提供使用 AWS Elemental MediaPackage 格式化的实时视频](#live-streaming-with-mediapackage)。
+ **使用可扩展源存储和提供内容** – 如果 MediaLive 对内容进行编码的格式是查看器所用的所有设备所需的格式，则使用高度可扩展的源（如 [AWS Elemental MediaStore](https://docs.aws.amazon.com/mediastore/latest/ug/getting-started.html)）来提供内容。有关使用 CloudFront 提供存储在 MediaStore 容器中的内容的分步说明，请参阅[使用 AWS Elemental MediaStore 作为源来提供视频](#video-streaming-mediastore)。

使用上述选项之一设置您的源之后，您可以使用 CloudFront 将实时流视频分发给查看器。

**提示**  
您可以了解 AWS 解决方案，该解决方案可自动部署服务以构建高度可用的实时查看体验。要查看自动部署此解决方案的步骤，请参阅[实时流式自动化部署](https://docs.aws.amazon.com/solutions/latest/live-streaming/deployment.html)。

**Topics**
+ [使用 AWS Elemental MediaStore 作为源来提供视频](#video-streaming-mediastore)
+ [提供使用 AWS Elemental MediaPackage 格式化的实时视频](#live-streaming-with-mediapackage)
+ [使用 AWS Elemental MediaPackage 提供视频点播内容](#live-streaming-mediapackage-vod)

## 使用 AWS Elemental MediaStore 作为源来提供视频
<a name="video-streaming-mediastore"></a>

如果将视频存储在 [AWS Elemental MediaStore](https://docs.aws.amazon.com/mediastore/latest/ug/getting-started.html) 容器中，您可以创建 CloudFront 分配以提供内容。

要开始操作，您可以授予 CloudFront 对您的 MediaStore 容器的访问权限。然后，您创建一个 CloudFront 分配，并将其配置为使用 MediaStore。

**从 AWS Elemental MediaStore 容器提供内容**

1. 按照[允许 Amazon CloudFront 访问您的 AWS Elemental MediaStore 容器](https://docs.aws.amazon.com/mediastore/latest/ug/cdns-allowing-cloudfront-to-access-mediastore.html)中的过程进行操作，然后返回到这些步骤以创建分配。

1. 使用以下设置创建分配：

   1. **源域** – 分配到您的 MediaStore 容器的数据端点。从下拉列表中，选择用于您的实时视频的 MediaStore 容器。

   1. **源路径** – 存储您的对象的 MediaStore 容器中的文件夹结构。有关更多信息，请参阅 [源路径](DownloadDistValuesOrigin.md#DownloadDistValuesOriginPath)。

   1. **添加自定义标头** – 如果您希望 CloudFront 在将请求转发到源时添加自定义标头，请添加标头名称和值。

   1. **查看器协议策略** - 选择**将 HTTP 重定向到 HTTPS**。有关更多信息，请参阅 [查看器协议策略](DownloadDistValuesCacheBehavior.md#DownloadDistValuesViewerProtocolPolicy)。

   1. **缓存策略**和**源请求策略** 
      + 对于**缓存策略**，选择**创建策略**，然后创建一个适合您的缓存需求和分段持续时间的缓存策略。在创建策略后，刷新缓存策略列表，然后选择您刚创建的策略。
      + 对于**源请求策略**，从下拉列表中选择 **CORS-CustomOrigin**。

   对于其他设置，您可以基于其他技术要求或您企业的需求设置特定值。有关分配的所有选项的列表以及有关设置这些选项的信息，请参阅[所有分配设置参考](distribution-web-values-specify.md)。

1. 对于您的应用程序中的链接（例如，媒体播放器），请以您通过 CloudFront 分配其他对象所用的相同格式指定媒体文件的名称。

## 提供使用 AWS Elemental MediaPackage 格式化的实时视频
<a name="live-streaming-with-mediapackage"></a>

如果您已使用 AWS Elemental MediaPackage 设置实时流格式，您可以创建一个 CloudFront 分配，并配置缓存行为以提供实时流。以下过程假定您已使用 MediaPackage 为实时视频[创建了通道](https://docs.aws.amazon.com/mediapackage/latest/ug/channels-create.html)并[添加了端点](https://docs.aws.amazon.com/mediapackage/latest/ug/channels-add-endpoint.html)。

要手动为 MediaPackage 创建 CloudFront 分配，请执行以下步骤：

**Topics**

### 步骤 1：创建和配置 CloudFront 分配
<a name="live-streaming-with-mediapackage-create-dist"></a>

完成以下步骤，以便为您使用 MediaPackage 创建的实时视频通道设置 CloudFront 分配。<a name="live-streaming-with-mediapackage-create-dist-procedure"></a>

**为您的实时视频通道创建分配**

1. 登录 AWS 管理控制台，并通过以下网址打开 CloudFront 控制台：[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 选择**创建分配**。

1. 选择用于分配的设置，包括以下内容：  
**源域**  
您的 MediaPackage 实时视频通道和端点所在的源。选择文本字段，然后从下拉列表中为您的实时视频选择 MediaPackage 源域。您可将一个域映射到多个源端点。  
如果您已使用另一个 AWS 账户创建源域，则在此字段中键入源 URL 值。源必须是 HTTPS URL。  
例如，对于像 `https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8` 这样的 HLS 端点，源域是 `3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com`。  
有关更多信息，请参阅 [源域](DownloadDistValuesOrigin.md#DownloadDistValuesDomainName)。  
**源路径**  
从中提供内容的 MediaPackage 端点的路径。  
有关源路径如何工作的更多信息，请参阅[源路径](DownloadDistValuesOrigin.md#DownloadDistValuesOriginPath)。
**重要**  
需要通配符路径 `*` 才能路由到 CloudFront 分配中的某处。为防止与显式路径不匹配的请求路由到真实源，请为该通配符路径创建“虚拟”源。  
**Example ：创建“虚拟”源**  

   在以下示例中，端点 `abc123` 和 `def456` 路由到“真实”源，但对任何其他端点的视频内容的请求会路由到没有正确子域的 `mediapackage.us-west-2.amazonaws.com`，这会导致 HTTP `404` 错误。

   MediaPackage 端点：

   ```
   https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8
   https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/def456/index.m3u8
   ```

   CloudFront 源 A：

   ```
   Domain: 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com
   Path: None
   ```

   CloudFront 源 B：

   ```
   Domain: mediapackage.us-west-2.amazonaws.com
   Path: None
   ```

   CloudFront 缓存行为：

   ```
   1. Path: /out/v1/abc123/* forward to Origin A
   2. Path: /out/v1/def456/* forward to Origin A
   3. Path: * forward to Origin B
   ```

   对于其他分配设置，可以基于其他技术要求或您企业的需求设置特定值。有关分配的所有选项的列表以及有关设置这些选项的信息，请参阅[所有分配设置参考](distribution-web-values-specify.md)。

   完成选择其他分配设置后，请选择**创建分配**。

1. 选择刚刚创建的分配，然后选择**行为**。

1. 选择默认缓存行为，然后选择**编辑**。为您选择作为源的通道指定正确的缓存行为设置。稍后，您将添加一个或多个其他源，并为其编辑缓存行为设置。

1. 转到 [CloudFront 分配页面](https://console.aws.amazon.com/cloudfront/v4/home#/distributions)。

1. 等到分配的**上次修改时间**列的值从**正在部署**变为某个日期和时间后，即表示 CloudFront 已创建您的分配。

### 步骤 2：为 MediaPackage 端点的域添加源
<a name="live-streaming-with-mediapackage-add-endpoints"></a>

重复此处的步骤，将您的每个 MediaPackage 通道端点添加到您的分配，请记住需要创建一个“虚拟”源。<a name="live-streaming-with-mediapackage-add-endpoints-procedure"></a>

**将其它端点作为源进行添加**

1. 在 CloudFront 控制台上，选择您为通道创建的分配。

1. 选择**源**，然后选择**创建源**。

1. 对于**源域**，请在下拉列表中，为您的通道选择一个 MediaPackage 端点。

1. 对于其他设置，可以基于其他技术要求或您企业的需求设置值。有关更多信息，请参阅 [源设置](DownloadDistValuesOrigin.md)。

1. 选择**创建源**。

### 步骤 3：配置所有端点的缓存行为
<a name="live-streaming-with-mediapackage-create-cache-behavior"></a>

对于每个端点，您必须配置缓存行为，以添加可正确路由请求的路径模式。您指定的路径模式取决于您提供的视频格式。以下过程包括用于 Apple HLS、CMAF、DASH 和 Microsoft Smooth Streaming 格式的路径模式信息。

您通常为每个端点设置两个缓存行为：
+ 父清单文件，这是您文件的索引。
+ 分段，它们是视频内容的文件。<a name="live-streaming-with-mediapackage-create-cache-behavior-procedure"></a>

**为端点创建缓存行为**

1. 在 CloudFront 控制台上，选择您为通道创建的分配。

1. 选择**行为**，然后选择**创建行为**。

1. 对于**路径模式**，使用特定的 MediaPackage `OriginEndpoint` GUID 作为路径前缀。  
**路径模式**  
对于像 `https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8` 这样的 HLS 端点，创建以下两个缓存行为：  
   + 对于父清单和子清单，请使用 `/out/v1/abc123/*.m3u8`。
   + 对于内容段，请使用 `/out/v1/abc123/*.ts`。
对于像 `https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8` 这样的 CMAF 端点，创建以下两个缓存行为：  
   + 对于父清单和子清单，请使用 `/out/v1/abc123/*.m3u8`。
   + 对于内容段，请使用 `/out/v1/abc123/*.mp4`。
对于像 `https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.mpd` 这样的 DASH 端点，创建以下两个缓存行为：  
   + 对于父清单，请使用 `/out/v1/abc123/*.mpd`。
   + 对于内容段，请使用 `/out/v1/abc123/*.mp4`。
对于像 `https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.ism` 这样的 Microsoft Smooth Streaming 端点，仅提供清单文件，因此仅创建一个缓存行为：`out/v1/abc123/index.ism/*`。

1. 对于每个缓存行为，指定以下设置的值：  
**查看器协议策略**  
选择**将 HTTP 重定向到 HTTPS**。  
**缓存策略和源请求策略**  
对于**缓存策略**，选择**创建策略**。对于新的缓存策略，请指定以下设置：    
**最小 TTL**  
设置为 5 秒或更短，以帮助防止提供过期内容。  
**查询字符串**  
对于**查询字符串**（在**缓存键设置**中），选择**包括指定的查询字符串**。对于**允许**，添加以下值，方法是键入这些值，然后选择**添加项目**：  
   + 将 `m` 添加为您希望 CloudFront 用作缓存基础的查询字符串参数。MediaPackage 响应始终包含标签 `?m=###`，以捕获端点的修改时间。如果内容已使用此标签的不同值进行缓存，CloudFront 会请求新的清单文件，而不提供此缓存版本。
   + 如果在 MediaPackage 中使用时移查看功能，请在清单文件请求（`start`、`end` 和 `*.m3u8`）的缓存行为中将 `*.mpd` 和 `index.ism/*` 指定为额外的查询字符串参数。通过这种方式，可根据清单文件请求中要求的时段提供该内容。有关时移查看功能和格式化内容开始和结束请求参数的更多信息，请参阅《AWS Elemental MediaPackage 用户指南》**中的[时移查看](https://docs.aws.amazon.com/mediapackage/latest/ug/time-shifted.html)。
   + 如果您在 MediaPackage 中使用清单筛选特征，请针对您要与清单请求（`aws.manifestfilter`、`*.m3u8` 和 `*.mpd`）的缓存行为结合使用的缓存策略，将 `index.ism/*` 指定为额外的查询字符串参数。这会将您的分配配置为将 `aws.manifestfilter` 查询字符串转发到您的 MediaPackage 源，需要此字符串才能使用清单筛选特征。有关更多信息，请参阅《AWS Elemental MediaPackage 用户指南》**中的[清单筛选](https://docs.aws.amazon.com/mediapackage/latest/ug/manifest-filtering.html)。
   + 如果您使用的是低延迟 HLS（LL-HLS），请指定 `_HLS_msn` 和 `_HLS_part` 作为缓存策略的附加查询字符串参数，用于清单请求的缓存行为（`*.m3u8`）。这会将您的分配配置为将 `_HLS_msn` 和 `_HLS_part` 查询字符串转发到 MediaPackage 源，这是 LL-HLS 阻止播放列表请求特征正常发挥作用所必需的。

1. 选择**创建**。

1. 创建缓存策略后，返回到缓存行为创建工作流。刷新缓存策略列表，然后选择您刚创建的策略。

1. 选择**创建行为**。

1. 如果端点不是 Microsoft Smooth Streaming 端点，请重复这些步骤以创建第二个缓存行为。

### 步骤 4：启用基于标头的 MediaPackage CDN 授权
<a name="live-streaming-with-mediapackage-enable-header-based-cdn-authorization"></a>

我们建议在 MediaPackage 端点和 CloudFront 分配之间启用基于标头的 MediaPackage CDN 授权。有关更多信息，请参阅**《AWS Elemental MediaPackage 用户指南》中的[在 MediaPackage 中启用 CDN 授权](https://docs.aws.amazon.com/mediapackage/latest/ug/cdn-auth-setup.html#cdn-aut-setup-endpoint)。

### 步骤 5：使用 CloudFront 为实时流频道提供服务
<a name="live-streaming-with-mediapackage-serve-channel"></a>

创建分配、添加源、创建缓存行为并启用基于标头的 CDN 授权之后，您可以使用 CloudFront 提供实时流通道。CloudFront 根据您为缓存行为配置的设置，将来自查看器的请求路由到正确的 MediaPackage 端点。

对于应用程序（例如媒体播放器）中的链接，请采用 CloudFront URL 的标准格式指定媒体文件的 URL。有关更多信息，请参阅 [在 CloudFront 中自定义文件的 URL 格式](LinkFormat.md)。

## 使用 AWS Elemental MediaPackage 提供视频点播内容
<a name="live-streaming-mediapackage-vod"></a>

如果您从 AWS Elemental MediaPackage 源发起视频点播（VOD，Video-on-Demand）内容，则可以创建 CloudFront 分配并配置优化的缓存行为，以便向查看器提供 VOD 内容。以下过程假设您已经使用[打包配置](https://docs.aws.amazon.com/mediapackage/latest/ug/pkg-cfig-create.html)[创建打包组](https://docs.aws.amazon.com/mediapackage/latest/ug/pkg-group-create.html)，并使用 MediaPackage [摄取了资产](https://docs.aws.amazon.com/mediapackage/latest/ug/asset-create.html)。

要手动为 MediaPackage 创建 CloudFront 分配，请执行以下步骤：

**Topics**

### 步骤 1：创建和配置 CloudFront 分配
<a name="live-streaming-mediapackage-vod-create-dist"></a>

完成以下过程，以便为您使用 MediaPackage 创建的打包组设置 CloudFront 分配。<a name="live-streaming-with-mediapackage-create-dist-procedure"></a>

**为您的 VOD 内容创建分配**

1. 登录 AWS 管理控制台，并通过以下网址打开 CloudFront 控制台：[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 选择**创建分配**。

1. 选择用于分配的设置，包括以下内容：  
**源域**  
您的 MediaPackage 打包组的源。在文本字段中键入源 URL 值。源必须是 HTTPS URL。  
例如，对于像 `https://3ae97e9482b0d011.egress.mediapackage-vod.us-west-2.amazonaws.com/out/v1/abc123/def456/ghi789/index.m3u8` 这样的 HLS 端点，源域是 `3ae97e9482b0d011.egress.mediapackage-vod.us-west-2.amazonaws.com`。  
有关更多信息，请参阅 [源域](DownloadDistValuesOrigin.md#DownloadDistValuesDomainName)。  
**源路径**  
提供内容的路径。  
有关源路径如何工作的更多信息，请参阅[源路径](DownloadDistValuesOrigin.md#DownloadDistValuesOriginPath)。
**重要**  
需要通配符路径 `*` 才能路由到 CloudFront 分配中的某处。为防止与显式路径不匹配的请求路由到真实源，请为该通配符路径创建“虚拟”源。  
**Example ：创建“虚拟”源**  

   在以下示例中，打包配置 `def456` 和 `321xyz` 路由到“真实”源，但对任何其他视频内容的请求会路由到没有正确子域的 `mediapackage-vod.us-west-2.amazonaws.com`，这会导致 HTTP `404` 错误。

   对于具有两种打包配置的打包组，其中单个资产的 MediaPackage 内容 URL：

   ```
   https://3ae97e9482b0d011.egress.mediapackage-vod.us-west-2.amazonaws.com/out/v1/abc123/def456/ghi789/index.m3u8
   https://3ae97e9482b0d011.egress.mediapackage-vod.us-west-2.amazonaws.com/out/v1/abc123/321xyz/654uvw/index.m3u8
   ```

   CloudFront 源 A：

   ```
   Domain: 3ae97e9482b0d011.egress.mediapackage-vod.us-west-2.amazonaws.com
   Path: None
   ```

   CloudFront 源 B：

   ```
   Domain: mediapackage-vod.us-west-2.amazonaws.com
   Path: None
   ```

   CloudFront 缓存行为：

   ```
   1. Path: /out/v1/*/def456/* forward to Origin A
   2. Path: /out/v1/*/321xyz/* forward to Origin A
   3. Path: * forward to Origin B
   ```

   对于其他分配设置，可以基于其他技术要求或您企业的需求设置特定值。有关分配的所有选项的列表以及有关设置这些选项的信息，请参阅[所有分配设置参考](distribution-web-values-specify.md)。

   完成选择其他分配设置后，请选择**创建分配**。

1. 选择刚刚创建的分配，然后选择**行为**。

1. 选择默认缓存行为，然后选择**编辑**。为您选择作为源的打包配置指定正确的缓存行为设置。稍后，您将添加一个或多个其他源，并为其编辑缓存行为设置。

1. 转到 [CloudFront 分配页面](https://console.aws.amazon.com/cloudfront/v4/home#/distributions)。

1. 等到分配的**上次修改时间**列的值从**正在部署**变为某个日期和时间后，即表示 CloudFront 已创建您的分配。

### 步骤 2：为 MediaPackage 打包组的域添加源
<a name="live-streaming-mediapackage-vod-add-endpoints"></a>

重复此处的步骤，将您的每个 MediaPackage 打包组添加到您的分配，请记住需要创建一个“虚拟”源。<a name="live-streaming-mediapackage-vod-add-packaging-groups-procedure"></a>

**添加其他打包组作为源**

1. 在 CloudFront 控制台上，选择您为通道创建的分配。

1. 选择**源**，然后选择**创建源**。

1. 对于**源域**，键入 MediaPackage 打包组的 URL。

1. 对于其他设置，可以基于其他技术要求或您企业的需求设置值。有关更多信息，请参阅 [源设置](DownloadDistValuesOrigin.md)。

1. 选择**创建源**。

### 步骤 3：配置所有打包配置的缓存行为
<a name="live-streaming-mediapackage-vod-create-cache-behavior"></a>

对于每个打包配置，您必须配置缓存行为，以添加可正确路由请求的路径模式。您指定的路径模式取决于您提供的视频格式。以下过程包括用于 Apple HLS、CMAF、DASH 和 Microsoft Smooth Streaming 格式的路径模式信息。

通常，您会为每个打包配置设置多个缓存行为：
+ 父清单文件，这是您文件的索引。
+ 分段，它们是视频内容的文件。一种格式可能会对内容使用多个扩展名，具体取决于您的配置。每个扩展名都需要缓存行为。<a name="live-streaming-mediapackage-vod-create-cache-behavior-procedure"></a>

**为打包配置创建缓存行为**

1. 在 CloudFront 控制台上，选择您为通道创建的分配。

1. 选择**行为**，然后选择**创建行为**。

1. 对于**路径模式**，使用特定的 MediaPackage VOD 打包配置作为路径前缀。这是 MediaPackage VOD 路径中的第二个 GUID。  
**路径模式**  
对于像 `https://3ae97e9482b0d011.egress.mediapackage-vod.us-west-2.amazonaws.com/out/v1/abc123/def456/ghi789/index.m3u8` 这样的 HLS 内容，创建以下缓存行为：  
   + 对于父清单和子清单，请使用 `/out/v1/*/def456/*.m3u8`。
   + 对于内容分段，请使用 `/out/v1/*/def456/*.ts` 并重复所有所需的分段扩展。
对于像 `https://3ae97e9482b0d011.egress.mediapackage-vod.us-west-2.amazonaws.com/out/v1/abc123/def456/ghi789/index.m3u8` 这样的 CMAF 内容，创建以下缓存行为：  
   + 对于父清单和子清单，请使用 `/out/v1/*/def456/*.m3u8`。
   + 对于内容分段，请使用 `/out/v1/*/def456/*.mp4` 并重复所有所需的分段扩展。
对于像 `https://3ae97e9482b0d011.egress.mediapackage-vod.us-west-2.amazonaws.com/out/v1/abc123/def456/ghi789/index.mpd` 这样的 DASH 内容，创建以下缓存行为：  
   + 对于父清单，请使用 `/out/v1/*/def456/*.mpd`。
   + 对于内容段，请使用 `/out/v1/*/def456/*.mp4`。
对于像 `https://3ae97e9482b0d011.egress.mediapackage-vod.us-west-2.amazonaws.com/out/v1/abc123/def456/ghi789/index.ism/Manifest` 这样的 Microsoft Smooth Streaming 端点，仅提供清单文件，因此仅创建一个缓存行为：`out/v1/*/def456/*/index.ism/*`。

1. 对于每个缓存行为，指定以下设置的值：  
**查看器协议策略**  
选择**将 HTTP 重定向到 HTTPS**。  
**缓存策略和源请求策略**  
对于**缓存策略**，选择**创建策略**。对于新的缓存策略，请指定以下设置：    
**最小 TTL**  
设置为 5 秒或更短，以帮助防止提供过期内容。  
**查询字符串**  
对于**查询字符串**（在**缓存键设置**中），选择**包括指定的查询字符串**。对于**允许**，添加以下值，方法是键入这些值，然后选择**添加项目**：  
   + 如果您在 MediaPackage 中使用清单筛选特征，请针对您要与清单请求（`aws.manifestfilter`、`*.m3u8` 和 `*.mpd`）的缓存行为结合使用的缓存策略，将 `index.ism/*` 指定为额外的查询字符串参数。这会将您的分配配置为将 `aws.manifestfilter` 查询字符串转发到您的 MediaPackage 源，需要此字符串才能使用清单筛选特征。有关更多信息，请参阅《AWS Elemental MediaPackage 用户指南》**中的[清单筛选](https://docs.aws.amazon.com/mediapackage/latest/ug/manifest-filtering.html)。

1. 选择**创建**。

1. 创建缓存策略后，返回到缓存行为创建工作流。刷新缓存策略列表，然后选择您刚创建的策略。

1. 选择**创建行为**。

1. 如果端点不是 Microsoft Smooth Streaming 端点，请重复这些步骤以创建第二个缓存行为。

### 步骤 4：启用基于标头的 MediaPackage CDN 授权
<a name="live-streaming-mediapackage-vod-enable-header-based-cdn-authorization"></a>

我们建议在 MediaPackage VOD 内容与 CloudFront 分配之间，启用基于标头的 MediaPackage CDN 授权。有关更多信息，请参阅**《AWS Elemental MediaPackage 用户指南》中的[在 MediaPackage 中启用 CDN 授权](https://docs.aws.amazon.com/mediapackage/latest/ug/cdn-auth-setup.html#cdn-aut-setup-endpoint)。

### 步骤 5：使用 CloudFront 为 VOD 内容提供服务
<a name="live-streaming-mediapackage-vod-serve-content"></a>

创建分配、添加源、创建缓存行为并启用基于标头的 CDN 授权之后，您可以使用 CloudFront 提供 VOD 内容。CloudFront 根据您为缓存行为配置的设置，将来自查看器的请求路由到正确的 MediaPackage VOD 内容。

对于应用程序（例如媒体播放器）中的链接，请采用 CloudFront URL 的标准格式指定媒体文件的 URL。有关更多信息，请参阅 [在 CloudFront 中自定义文件的 URL 格式](LinkFormat.md)。