

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 自定义 CDN 和 MediaTailor 集成的 CloudFormation 模板
<a name="customize-cloudformation-template"></a>

AWS Elemental MediaTailor 模板自定义允许广播专业人员调整 AWS CloudFormation 模板以适应特定的工作流程要求。尽管基本模板适用于许多场景，但这些自定义项可以帮助您满足更复杂的需求。

以下示例显示了您可以添加到模板中的 YAML 代码片段。如果您不熟悉 YAML 或 CloudFormation 语法，可以考虑与开发人员或 AWS 解决方案架构师合作进行这些更改。

您可以自定义 CloudFormation 模板以满足您的特定工作流程要求。

## 添加或修改起点
<a name="add-modify-origins"></a>

对于使用多个内容源（例如主源和备用源，或者不同的内容库）的广播工作流程，您可以向 CloudFront 分发添加其他来源：

```
Origins:
  # Add a new origin for additional content
  - Id: SecondaryContentOrigin
    DomainName: {{secondary-content.example.com}}
    CustomOriginConfig:
      OriginProtocolPolicy: 'https-only'
      OriginSSLProtocols: 
        - TLSv1.2
```

然后添加相应的缓存行为，将特定的模式路由到这个来源：

```
CacheBehaviors:
  - PathPattern: '/secondary-content/*'
    TargetOriginId: SecondaryContentOrigin
    ViewerProtocolPolicy: 'https-only'
    CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6  # Managed-CachingOptimized
```

## 创建自定义缓存策略
<a name="create-custom-cache-policies"></a>

对于具有特定缓存要求（例如质量选择参数或观众身份验证）的广播工作流程，您可以创建自定义缓存策略，而不是使用托管缓存策略。有关 TTL 值和缓存策略的详细指导，请参阅[针对 CDN 和 MediaTailor 集成的缓存优化](cdn-optimize-caching.md)。

```
# Define a custom cache policy
CustomCachePolicy:
  Type: AWS::CloudFront::CachePolicy
  Properties:
    CachePolicyConfig:
      Name: !Sub '${AWS::StackName}-CustomCachePolicy'
      DefaultTTL: 86400  # 24 hours
      MaxTTL: 31536000   # 1 year
      MinTTL: 1          # 1 second
      ParametersInCacheKeyAndForwardedToOrigin:
        CookiesConfig:
          CookieBehavior: none
        HeadersConfig:
          HeaderBehavior: none
        QueryStringsConfig:
          QueryStringBehavior: whitelist
          QueryStrings:
            - quality
            - format

# Reference the custom policy in a cache behavior
CacheBehaviors:
  - PathPattern: '/custom-path/*'
    TargetOriginId: ContentOrigin
    ViewerProtocolPolicy: 'https-only'
    CachePolicyId: !Ref CustomCachePolicy
```

## 增强 MediaTailor 配置
<a name="enhance-mediatailor-config"></a>

对于需要高级广告插入功能的广播工作流程，您可以使用广告预取（以减少延迟）、个性化阈值和导视广告等选项来增强 MediaTailor 配置。

```
MediaTailorPlaybackConfig:
  Type: AWS::MediaTailor::PlaybackConfiguration
  Properties:
    # Add ad prefetching for improved performance
    AvailSuppression:
      Mode: BEHIND_LIVE_EDGE
      Value: 00:00:00
    # Add personalization parameters
    PersonalizationThresholdSeconds: 2
    # Add bumper ads
    Bumper:
      StartUrl: https://{{example.com/bumper-start.mp4}}
      EndUrl: https://{{example.com/bumper-end.mp4}}
    # Other existing properties...
```

有关 MediaTailor 配置选项的更多信息，请参阅[AWS Elemental MediaTailor 用于插入广告](configurations.md)。

## 添加安全功能
<a name="add-security-features"></a>

对于具有特定安全要求（例如地理限制或防护 DDo S 攻击）的广播工作流程，您可以添加 AWS WAF 集成和地理限制：

```
# Create a AWS WAF Web ACL
WebACL:
  Type: AWS::WAFv2::WebACL
  Properties:
    Name: !Sub '${AWS::StackName}-WebACL'
    Scope: CloudFront
    DefaultAction:
      Allow: {}
    VisibilityConfig:
      SampledRequestsEnabled: true
      CloudWatchMetricsEnabled: true
      MetricName: !Sub '${AWS::StackName}-WebACL'
    Rules:
      - Name: RateLimitRule
        Priority: 0
        Action:
          Block: {}
        VisibilityConfig:
          SampledRequestsEnabled: true
          CloudWatchMetricsEnabled: true
          MetricName: RateLimitRule
        Statement:
          RateBasedStatement:
            Limit: 1000
            AggregateKeyType: IP

# Reference the AWS WAF Web ACL in the CloudFront distribution
CloudFrontDistribution:
  Type: AWS::CloudFront::Distribution
  Properties:
    DistributionConfig:
      WebACLId: !GetAtt WebACL.Arn
      # Add geo-restriction
      Restrictions:
        GeoRestriction:
          RestrictionType: whitelist
          Locations:
            - US
            - CA
            - GB
      # Other existing properties...
```

有关 CloudFormation 模板的更多信息，请参阅《[AWS CloudFormation 用户指南》](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)。

有关特定于广播的 CloudFormation 模板和示例，请参阅 AW [S 媒体服务](https://github.com/aws-samples/aws-media-services-tools)工具存储库。 GitHub 