

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Automatisez MediaTailor et créez un CDN avec CloudFormation
<a name="automating-cdn-integration"></a>

L'automatisation à l' AWS Elemental MediaTailor aide d'un réseau de diffusion de contenu (CDN) AWS CloudFormation rationalise votre flux de travail d'insertion publicitaire et améliore la fiabilité.

Cette section explique comment utiliser AWS CloudFormation (AWS infrastructure en tant que service de code) pour configurer automatiquement un réseau AWS Elemental MediaTailor de diffusion de contenu (CDN). Bien que vous puissiez configurer manuellement cette intégration comme décrit dans les sections précédentes, son utilisation CloudFormation permet de gagner du temps et de réduire les erreurs en automatisant l'ensemble du processus à l'aide d'un seul modèle.

Si vous êtes nouveau dans ce CloudFormation domaine, il s'agit d'un service qui vous permet de créer un modèle de fichier qui définit toutes les ressources AWS dont vous avez besoin. Lorsque vous déployez ce modèle, il crée et configure CloudFormation automatiquement ces ressources pour vous, en veillant à ce qu'elles fonctionnent correctement ensemble.

Pour plus d'informations CloudFormation, consultez le [guide de CloudFormation l'utilisateur](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html). Pour plus d'informations sur les types de MediaTailor ressources dans CloudFormation, voir [AWS: : MediaTailor Resource Type Reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_MediaTailor.html).

**Topics**
+ [Pourquoi utiliser AWS CloudFormation](cloudformation-benefits.md)
+ [Préparation au déploiement](prepare-cloudformation-deployment.md)
+ [Déployer le modèle](deploy-cloudformation-template.md)
+ [Utiliser les ressources déployées](use-deployed-resources.md)
+ [Testez et validez votre déploiement](test-validate-deployment.md)
+ [Résolution des problèmes de déploiement](troubleshoot-deployment-issues.md)
+ [Personnalisez le modèle](customize-cloudformation-template.md)
+ [Référence de modèles](cloudformation-template-reference.md)

# Pourquoi utiliser CloudFormation for MediaTailor et intégrer un CDN
<a name="cloudformation-benefits"></a>

AWS Elemental MediaTailor l'automatisation AWS CloudFormation offre des avantages significatifs aux professionnels de la diffusion qui gèrent les flux de travail de streaming. La configuration manuelle à l' MediaTailor aide d'un réseau de diffusion de contenu (CDN) peut être chronophage et source d'erreurs. Le recours à l' CloudFormation automatisation présente les avantages suivants.
+ **Cohérence** : garantit que la même configuration est déployée à chaque fois, réduisant ainsi les erreurs humaines.
+ **Contrôle de version** : stockez votre infrastructure sous forme de code dans un système de contrôle de version pour suivre les modifications.
+ **Déploiement rapide** : déployez des configurations complexes en quelques minutes au lieu de plusieurs heures de configuration manuelle.
+ **Réplication de l'environnement** : répliquez facilement les configurations dans les environnements de développement, de test et de production.
+ **Documentation** : Le modèle lui-même sert de documentation de votre infrastructure.

Voici comment le flux de travail automatisé se compare à la configuration manuelle :


| Configuration manuelle (plusieurs étapes) | Configuration automatisée (modèle unique) | 
| --- | --- | 
| Création d'une configuration de MediaTailor lecture | Déployer un CloudFormation modèle avec des paramètres | 
| Création d'une CloudFront distribution | 
| Configuration des comportements du cache | 
| Configuration des configurations de sécurité | 

Le flux de travail automatisé pour la configuration MediaTailor CloudFront suit les étapes suivantes :

1. Déployez le CloudFormation modèle avec l'origine de votre contenu et les paramètres de votre serveur publicitaire

1. CloudFormation crée et configure toutes les ressources nécessaires :
   + MediaTailor configuration de lecture pour l'insertion de publicités
   + CloudFront distribution avec des comportements de cache appropriés
   + Configurations de sécurité pour la protection du contenu

1. Utilisez les CloudFormation sorties pour accéder à votre flux publicitaire URLs

1. Diffusez votre contenu avec des publicités insérées dynamiquement

# Préparation au CloudFormation déploiement du CDN et MediaTailor des intégrations
<a name="prepare-cloudformation-deployment"></a>

AWS Elemental MediaTailor déploiement AWS CloudFormation nécessitant des prérequis et des étapes de préparation spécifiques. Avant de commencer CloudFormation à travailler avec Amazon pour intégrer MediaTailor CloudFront, assurez-vous de disposer des éléments suivants.
+ Un AWS compte avec des autorisations de création MediaTailor CloudFront, et CloudFormation des ressources
+ Une origine de contenu sur laquelle votre contenu vidéo est hébergé (Amazon S3 ou un autre serveur d'origine, par exemple) AWS Elemental MediaPackage
+ Un serveur de décision publicitaire (ADS) capable de répondre aux demandes VAST

Avant de déployer le CloudFormation modèle, collectez les paramètres obligatoires suivants :

`AdServerUrl`  
URL du serveur publicitaire VAST pour l'insertion dynamique d'annonces. Un point de terminaison VAST statique est fourni pour les tests.

`ContentOriginDomainName`  
Nom de domaine de l'origine de votre contenu sans protocole (par exemple *mediapackage-domain.mediapackagev2.us-west-2.amazonaws.com**mybucket.s3.amazonaws.com*, ou*custom-origin.example.com*). N'incluez pas de préfixes http ://ou https ://ni aucun chemin.

`ContentOriginType`  
Type d'origine du contenu :  
+ *mediapackagev2* : Pour les origines AWS Elemental MediaPackage 
+ *s3* : Pour les origines des compartiments Amazon S3
+ *personnalisé* : pour tout autre type d'origine

Le modèle créera plusieurs AWS ressources qui fonctionnent ensemble pour diffuser votre contenu sous forme de publicités personnalisées. Ce qui suit décrit le rôle de chaque composant :

## Contrôle d'accès à l'origine
<a name="origin-access-control-resource"></a>

Le contrôle d'accès à l'origine (OAC) est une fonctionnalité de sécurité qui garantit que votre contenu n'est accessible que par le biais de votre serveur d'origine CloudFront, et non directement à partir de celui-ci. Cela permet de protéger votre contenu contre tout accès non autorisé.

Pour Amazon S3 Origins MediaPackage et Amazon S3, le modèle crée une ressource Origin Access Control (OAC) pour sécuriser l'accès à votre contenu. 

## MediaTailor configuration de lecture
<a name="mediatailor-resource"></a>

La configuration de MediaTailor lecture est le composant principal qui gère l'insertion des publicités. Il reçoit du contenu provenant de votre origine, demande des publicités à votre serveur publicitaire et les combine dans un flux personnalisé pour chaque spectateur.

Le modèle crée une configuration de MediaTailor lecture avec les paramètres suivants :
+ Source de contenu vidéo pointant vers votre CloudFront distribution
+ URL du serveur de décision publicitaire configurée sur le point de terminaison VAST que vous avez spécifié
+ Configuration de pré-diffusion en direct pour l'insertion de publicités pendant les diffusions en direct
+ Configuration du CDN avec les préfixes d'URL de segment appropriés

## CloudFront distribution
<a name="cloudfront-resource"></a>

La CloudFront distribution diffuse votre contenu aux spectateurs du monde entier avec une faible latence. Il gère différents types de demandes (manifestes, segments de contenu, segments publicitaires) et les achemine vers les sources appropriées.

Pour les professionnels de la diffusion CDNs novices, voici quelques termes clés :

Origin  
Un serveur sur lequel votre contenu original est stocké (comme MediaPackage Amazon S3)

Comportement de cache  
Règles qui déterminent la manière dont les différents types de contenu sont mis en cache et diffusés

Politique de cache  
Paramètres qui contrôlent la durée de mise en cache du contenu et les composants de demande qui affectent la mise en cache

Le modèle crée une CloudFront distribution avec les composants suivants :
+ Trois origines :
  + Origine du contenu (MediaPackageAmazon S3 ou personnalisé)
  + MediaTailor origine des manifestes
  + MediaTailor origine des segments
+ Comportements du cache avec des modèles appropriés :
  + Comportement par défaut pour les segments de contenu
  + Comportement des segments MediaTailor publicitaires (/tm/\$1)
  + Comportement pour les médias MediaTailor interstitiels (/v1/i-media/\$1)
  + Comportement pour les manifestes personnalisés (/v1/\$1)
  + Comportement des demandes de redirection de segment (/segment/\$1)
+ Politiques de cache optimisées pour chaque comportement :
  + `CachingOptimized`pour du contenu pouvant être mis en cache
  + `CachingDisabled`pour des manifestes personnalisés
+ Politiques de demande d'origine pour garantir le transfert correct des en-têtes
+ Politiques d'en-tête de réponse pour le support CORS

# Déployer le CloudFormation modèle pour le CDN et les intégrations MediaTailor
<a name="deploy-cloudformation-template"></a>

AWS Elemental MediaTailor le déploiement à l'aide du AWS CloudFormation modèle est simple une fois que vous comprenez ce que le modèle va créer. Ce processus prend environ 15 à 30 minutes, la plupart du temps étant consacré à attendre le déploiement de la CloudFront distribution.

Pour déployer le CloudFormation modèle et configurer votre flux de travail d'insertion automatique d'annonces, procédez comme suit :

**Pour déployer le MediaTailor CloudFormation modèle**

1. Téléchargez le CloudFormation modèle depuis le AWS Elemental MediaTailor GitHub référentiel ou copiez-le depuis le[AWS CloudFormation modèle de référence pour AWS Elemental MediaTailor l' CloudFront intégration à Amazon](cloudformation-template-reference.md).

1. Ouvrez la [CloudFormation console](https://console.aws.amazon.com/cloudformation/home).

1. Choisissez **Créer une pile** > **Avec de nouvelles ressources (standard)**.

1. Sous **Spécifier le modèle**, choisissez **Télécharger un fichier modèle** et chargez le modèle.

1. Entrez un nom de pile et fournissez des valeurs pour les paramètres requis :
   + **AdServerUrl**: URL de votre serveur publicitaire VAST (par exemple, https ://*your-ad-server.com*/vast)
   + **ContentOriginDomainName**: nom de domaine de l'origine de votre contenu sans protocole (par exemple,*mediapackage-domain.mediapackagev2.us-west-2.amazonaws.com*)
   + **ContentOriginType**: Sélectionnez le type d'origine du contenu :
     + *mediapackagev2* : Pour les origines AWS Elemental MediaPackage 
     + *s3* : Pour les origines des compartiments Amazon S3
     + *personnalisé* : pour tout autre type d'origine

1. Passez en revue la configuration et choisissez **Create stack**.

1. Attendez que la création de la pile soit terminée, ce qui prend généralement 5 à 10 minutes. Vous pouvez suivre les progrès dans l'onglet **Événements**.

1. Une fois terminé, accédez à l'onglet **Sorties** URLs pour trouver les manifestes HLS et DASH.

**Note**  
Si vous l'utilisez AWS Elemental MediaPackage comme origine de contenu, assurez-vous que vos MediaPackage points de terminaison sont correctement configurés et accessibles. Pour de plus amples informations, veuillez consulter [MediaPackage Intégration au CDN](mediapackage-integration.md).

# Utiliser les ressources CloudFormation déployées pour le CDN et l'intégration MediaTailor
<a name="use-deployed-resources"></a>

AWS Elemental MediaTailor les ressources déployées par la AWS CloudFormation pile fournissent plusieurs résultats importants que vous utiliserez pour accéder à votre contenu grâce à l'insertion de publicités. Une fois la CloudFormation pile créée avec succès, vous devez comprendre comment utiliser les résultats pour accéder à votre contenu contenant des annonces insérées. Cette méthode est similaire à celle que vous utiliseriez MediaTailor URLs dans une configuration manuelle, mais le CloudFormation déploiement les fournit URLs automatiquement.

Une fois le déploiement réussi, la CloudFormation pile fournit plusieurs résultats importants que vous utiliserez pour accéder à votre contenu lors de l'insertion d'annonces :

`CloudFrontDomainName`  
Le nom de domaine de votre CloudFront distribution (par exemple,*d1234abcdef.CloudFront.net*)

`HlsManifestUrl`  
URL de base pour les manifestes HLS avec insertion d'annonces (par exemple, https ://*d1234abcdef.CloudFront.net**12345*/v1/master////) *my-playback-config*

`DashManifestUrl`  
URL de base pour les manifestes DASH avec insertion d'annonces (par exemple, https ://*d1234abcdef.CloudFront.net**12345*/v1/dash////) *my-playback-config*

`MediaTailorPlaybackConfigName`  
Nom de la configuration MediaTailor de lecture créée (par exemple*my-stack-PlaybackConfig*)

## Construire une lecture URLs
<a name="construct-playback-urls"></a>

Pour créer l'URL de diffusion complète de votre contenu contenant des publicités, vous devez associer l'URL de base des CloudFormation résultats à votre chemin de manifeste spécifique. Il s'agit d'une étape essentielle que les professionnels de la diffusion doivent comprendre, car elle connecte votre contenu existant au système d'insertion publicitaire.

1. Commencez par l'URL du manifeste approprié dans les sorties :

   ```
   HlsManifestUrl: https://d1234abcdef.CloudFront.net/v1/master/12345/my-playback-config/
   ```

1. Ajoutez le chemin de votre manifeste spécifique :

   ```
   Your manifest path: channel/index.m3u8
   ```

1. L'URL de lecture complète devient :

   ```
   https://d1234abcdef.CloudFront.net/v1/master/12345/my-playback-config/channel/index.m3u8
   ```

Utilisez cette URL dans votre lecteur vidéo pour diffuser du contenu contenant des publicités insérées dynamiquement.

**Astuce**  
Si vous ne savez pas quel doit être le chemin de votre manifeste, vérifiez votre serveur d'origine. Pour les MediaPackage origines, il s'agit du chemin d'accès au manifeste HLS ou DASH de votre terminal. Pour les origines d'Amazon S3, il s'agit du chemin d'accès à votre fichier manifeste dans le compartiment.

Pour plus d'informations sur la structure des MediaTailor URL, consultez[Configurer l'intégration du CDN avec MediaTailor](cdn-configuration.md).

## Configuration d'un lecteur vidéo
<a name="configure-video-player"></a>

Une fois que vous avez obtenu votre URL de lecture, vous devez configurer un lecteur vidéo pour l'utiliser. Pour les professionnels de la diffusion, cela revient à configurer un lecteur pour n'importe quel stream HLS ou DASH, mais le stream inclura désormais des publicités personnalisées. Voici un exemple simple d'utilisation du populaire HLS.js  lecteur :

```
<!DOCTYPE html>
<html>
<head>
    <title>MediaTailor Playback Example</title>
    <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
</head>
<body>
    <video id="video" controls style="width: 640px; height: 360px;"></video>
    
    <script>
        const video = document.getElementById('video');
        const mediaUrl = 'https://<replaceable>d1234abcdef.CloudFront.net</replaceable>/v1/master/<replaceable>12345</replaceable>/<replaceable>my-playback-config</replaceable>/<replaceable>channel/index.m3u8</replaceable>';
        
        if (Hls.isSupported()) {
            const hls = new Hls();
            hls.loadSource(mediaUrl);
            hls.attachMedia(video);
        } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
            video.src = mediaUrl;
        }
    </script>
</body>
</html>
```

Vous pouvez également utiliser des lecteurs de diffusion professionnels tels que :
+ Joueur JW
+ Lecteur Bitmovin
+ THEOplayer
+ Video.js

Pour plus d'informations sur l'intégration des joueurs avec MediaTailor, consultez[MediaTailor exigences relatives à l'intégration des serveurs publicitaires](vast.md).

# Testez et validez votre CloudFormation déploiement pour le CDN et l'intégration MediaTailor
<a name="test-validate-deployment"></a>

AWS Elemental MediaTailor la validation du déploiement est une étape essentielle pour les professionnels de la diffusion avant la mise en ligne. Cette section vous explique comment tester votre déploiement afin de vous assurer que les publicités sont correctement insérées et que le contenu est diffusé sans problème.

Après avoir déployé le CloudFormation modèle, procédez comme suit pour vérifier que votre configuration fonctionne correctement :

**Pour tester votre CloudFront intégration MediaTailor et votre intégration**

1. Vérifiez que toutes les ressources ont été créées correctement dans la CloudFormation console.

1. Vérifiez que la configuration de MediaTailor lecture est active dans la [MediaTailor console](https://console.aws.amazon.com/mediatailor/home).

1. Vérifiez que la CloudFront distribution est déployée et activée dans la [CloudFront console](https://console.aws.amazon.com/CloudFront/home).

1. Testez la lecture à l'aide d'un exemple de manifeste :

   1. Créez l'URL de lecture complète comme décrit dans[Construire une lecture URLs](use-deployed-resources.md#construct-playback-urls).

   1. Utilisez un lecteur vidéo compatible HLS ou DASH (comme VLC, JW Player ou le lecteur AWS console).

   1. Vérifiez que le contenu est diffusé et que les publicités sont insérées aux points de rupture attendus.

1. Vérifiez les connexions MediaTailor CloudWatch pour détecter d'éventuelles erreurs d'insertion d'annonces.

Lorsque vous testez l'insertion d'annonces, recherchez les indicateurs de succès suivants :
+ Transitions fluides entre le contenu et les publicités
+ Les publicités apparaissent aux points de rupture attendus (pré-lancement, mi-lancement, post-lancement)
+ La qualité de l'annonce correspond à la qualité du contenu
+ Aucune erreur de mise en mémoire tampon ou de lecture pendant les transitions publicitaires

Pour des procédures de test plus détaillées, voir[Comprendre le comportement d'insertion des AWS Elemental MediaTailor publicités](ad-behavior.md). Pour des tests et une validation complets de l'intégration du CDN, voir[Tests et validation pour le CDN et MediaTailor les intégrations](cdn-integration-testing.md).

# Résoudre les problèmes de CloudFormation déploiement courants pour le CDN et les intégrations MediaTailor
<a name="troubleshoot-deployment-issues"></a>

AWS Elemental MediaTailor des problèmes de déploiement peuvent survenir même en cas d'automatisation lors du déploiement ou de la lecture. En tant que professionnel de la diffusion, comprendre comment résoudre ces problèmes vous aidera à maintenir un service de streaming fiable avec insertion de publicités.

Si vous rencontrez des problèmes lors de votre CloudFormation déploiement ou de l' CloudFrontintégration qui en résulte MediaTailor , consultez les problèmes et solutions courants suivants :

## CloudFormation problèmes de déploiement
<a name="deployment-troubleshooting"></a>

La création de la pile échoue avec l'erreur « Échec de la création de ressources »  
**Causes possibles :**  
+ Format de nom de domaine d'origine du contenu non valide
+ Autorisations insuffisantes pour créer des ressources
**Solution :** Vérifiez l'erreur de ressource spécifique dans l'onglet CloudFormation Événements. Vérifiez que le nom de domaine d'origine du contenu est correctement formaté sans préfixes ni chemins de protocole. Assurez-vous que votre rôle IAM dispose des autorisations suffisantes pour créer toutes les ressources requises.

CloudFront le déploiement de la distribution prend beaucoup de temps  
**Cause :** le déploiement complet des CloudFront distributions prend généralement 15 à 30 minutes.  
**Solution :** il s'agit du comportement normal. Attendez que la distribution atteigne l'état « Déployé » avant de procéder au test.

## Problèmes de lecture et d'insertion de publicités
<a name="playback-troubleshooting"></a>

Le contenu est diffusé mais aucune publicité n'est insérée  
**Causes possibles :**  
+ Le serveur de décision publicitaire ne répond pas ou renvoie un VAST vide
+ Le contenu ne contient pas de marqueurs publicitaires
**Solution :** vérifiez que votre serveur publicitaire est accessible et qu'il renvoie des réponses VAST valides. Vérifiez que votre contenu comporte des marqueurs publicitaires appropriés (marqueurs SCTE-35 pour le contenu en direct ou balises ad break pour la VOD).

403 Erreurs interdites lors de l'accès au contenu  
**Causes possibles :**  
+ Le contrôle d'accès à l'origine n'est pas configuré correctement
+ Problèmes liés au bucket d'origine ou aux autorisations des terminaux
**Solution :** pour les origines d'Amazon S3, vérifiez que la politique des compartiments autorise l'accès depuis la CloudFront distribution. Pour les MediaPackage origines, vérifiez que le contrôle d'accès aux origines est correctement configuré et que le point de terminaison est accessible.

Erreurs de lecture ou mise en mémoire tampon  
**Causes possibles :**  
+ Les modèles de chemins de comportement du cache ne correspondent pas aux chemins de contenu
+ Configuration du domaine d'origine incorrecte
**Solution :** vérifiez que vos comportements de cache présentent les modèles de chemin corrects pour acheminer les demandes vers les origines appropriées. Consultez CloudFront les journaux pour voir quelle origine traite les demandes et confirmez qu'il s'agit bien de celle attendue.

Pour les professionnels de la diffusion, ces conseils de dépannage supplémentaires peuvent être utiles :
+ Utilisez Amazon CloudWatch Logs Insights pour rechercher des modèles d'erreur spécifiques dans MediaTailor les journaux
+ Testez d'abord avec un simple serveur publicitaire VAST (comme celui fourni par défaut dans le modèle) avant d'utiliser votre serveur publicitaire de production
+ Vérifiez les marqueurs publicitaires de votre contenu à l'aide de l'outil d'inspection des MediaTailor manifestes de la console
+ Vérifiez le trafic réseau dans les outils de développement de votre navigateur pour vérifier si les demandes adressées au serveur publicitaire sont correctement envoyées

Pour un dépannage supplémentaire, consultez les CloudWatch journaux afin d'identifier les deux types d'erreurs MediaTailor et CloudFront d'identifier les erreurs spécifiques. 

# Personnalisez le CloudFormation modèle pour le CDN et les intégrations MediaTailor
<a name="customize-cloudformation-template"></a>

AWS Elemental MediaTailor la personnalisation du modèle permet aux professionnels de la diffusion d'adapter le AWS CloudFormation modèle aux exigences spécifiques du flux de travail. Bien que le modèle de base fonctionne pour de nombreux scénarios, ces personnalisations peuvent vous aider à répondre à des besoins plus complexes.

Les exemples ci-dessous montrent des extraits de code YAML que vous pouvez ajouter au modèle. Si vous ne connaissez pas le langage YAML ou CloudFormation la syntaxe, envisagez de faire appel à un développeur ou à un architecte de AWS solutions pour effectuer ces modifications.

Vous pouvez personnaliser le CloudFormation modèle pour répondre à vos exigences spécifiques en matière de flux de travail.

## Ajouter ou modifier des origines
<a name="add-modify-origins"></a>

Pour les flux de diffusion qui utilisent plusieurs sources de contenu (telles que des sources principales et de sauvegarde, ou différentes bibliothèques de contenu), vous pouvez ajouter des origines supplémentaires à votre CloudFront distribution :

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

Ajoutez ensuite un comportement de cache correspondant pour acheminer des modèles spécifiques vers cette origine :

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

## Création de politiques de cache personnalisées
<a name="create-custom-cache-policies"></a>

Pour les flux de diffusion soumis à des exigences de mise en cache spécifiques (comme les paramètres de sélection de qualité ou l'authentification du spectateur), vous pouvez créer des politiques de cache personnalisées au lieu d'utiliser des politiques de cache gérées. Pour obtenir des conseils détaillés sur les valeurs TTL et les stratégies de mise en cache, voir. [Optimisation de la mise en cache pour le CDN et les intégrations 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
```

## Améliorez la MediaTailor configuration
<a name="enhance-mediatailor-config"></a>

Pour les flux de diffusion nécessitant des fonctionnalités avancées d'insertion de publicités, vous pouvez améliorer la MediaTailor configuration grâce à des options telles que le préchargement des publicités (pour réduire le temps de latence), les seuils de personnalisation et les publicités exceptionnelles.

```
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...
```

Pour plus d'informations sur les options MediaTailor de configuration, consultez[Utilisation AWS Elemental MediaTailor pour insérer des publicités](configurations.md).

## Ajoutez des fonctionnalités de sécurité
<a name="add-security-features"></a>

Pour les flux de diffusion soumis à des exigences de sécurité spécifiques (comme les restrictions géographiques ou la protection contre les attaques DDo S), vous pouvez ajouter des AWS WAF intégrations et des restrictions géographiques :

```
# 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...
```

Pour plus d'informations sur les CloudFormation modèles, consultez le [guide de AWS CloudFormation l'utilisateur](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html).

Pour obtenir des CloudFormation modèles et des exemples spécifiques à la diffusion, consultez le référentiel d'[outils GitHub AWS Media Services](https://github.com/aws-samples/aws-media-services-tools).

# AWS CloudFormation modèle de référence pour AWS Elemental MediaTailor l' CloudFront intégration à Amazon
<a name="cloudformation-template-reference"></a>

AWS Elemental MediaTailor l'intégration avec Amazon CloudFront peut être automatisée à l'aide du AWS CloudFormation modèle complet suivant :

```
AWSTemplateFormatVersion: '2010-09-09'
Description: | CloudFormation template that sets up AWS Elemental MediaTailor integration with CloudFront Distribution
  for server-side ad insertion. This template supports various content origins including MediaPackage, Amazon S3,
  and custom origins, making it versatile for different streaming architectures.

Parameters:
  AdServerUrl:
    Type: String
    Default: 'https://d1kbmkziz9rksx.CloudFront.net/VASTEndpoint.xml'
    Description: URL of the VAST ad server for dynamic ad insertion. Static VAST endpoint provided for testing. 

  ContentOriginDomainName:
    Type: String
    Description: |
      Domain name of your content origin without protocol (e.g., mediapackage-domain.mediapackagev2.us-west-2.amazonaws.com,
      mybucket.s3.amazonaws.com, or custom-origin.example.com).
      Do not include http:// or https:// prefixes or any paths.
    AllowedPattern: "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$"
    ConstraintDescription: Must be a valid domain name (e.g., example.com) without protocol or path components. IP addresses are not allowed.

  ContentOriginType:
    Type: String
    AllowedValues:
      - mediapackagev2
      - s3
      - custom
    Default: mediapackagev2
    Description: |
      The type of content origin:
      - mediapackagev2: AWS Elemental MediaPackage V2
      - s3: Amazon S3 bucket
      - custom: Any other custom origin

Resources:
  #---------------------------------------------------------------------------
  # Origin Access Control (for securing MediaPackage V2 and Amazon S3 origins)
  #---------------------------------------------------------------------------
  CloudFrontOriginAccessControl:
    Type: AWS::CloudFront::OriginAccessControl
    Condition: IsNotCustomOrigin
    Properties:
      OriginAccessControlConfig:
        Name: !Sub '${AWS::StackName}-OAC'
        OriginAccessControlOriginType: !Ref ContentOriginType
        SigningBehavior: always
        SigningProtocol: sigv4
        Description: Origin Access Control for content origin

  #---------------------------------------------------------------------------
  # MediaTailor Playback Configuration
  #---------------------------------------------------------------------------
  MediaTailorPlaybackConfig:
    Type: AWS::MediaTailor::PlaybackConfiguration
    Properties:
      Name: !Sub '${AWS::StackName}-PlaybackConfig'
      # The video content source should point to your CloudFront distribution
      VideoContentSourceUrl: !Sub 'https://${CloudFrontDistribution.DomainName}/'
      # The Ad Decision Server URL is where MediaTailor will request ads
      AdDecisionServerUrl: !Ref AdServerUrl
      # Configuration for pre-roll ads during live streams
      LivePreRollConfiguration:
        AdDecisionServerUrl: !Ref AdServerUrl
        MaxDurationSeconds: 30
      # CDN configuration for integrating with CloudFront
      CdnConfiguration:
        AdSegmentUrlPrefix: '/'
        ContentSegmentUrlPrefix: '/'
      # Set a reasonable manifest segment timeout
      ManifestProcessingRules:
        AdMarkerPassthrough:
          Enabled: false

  #---------------------------------------------------------------------------
  # CloudFront Distribution
  #---------------------------------------------------------------------------
  CloudFrontDistribution:
    Type: AWS::CloudFront::Distribution
    Properties:
      DistributionConfig:
        Enabled: true
        HttpVersion: http2and3
        IPV6Enabled: true
        Comment: !Sub 'Distribution for MediaTailor ad insertion with ${ContentOriginType} origin'
        
        # Default cache behavior points to the content origin
        DefaultCacheBehavior:
          TargetOriginId: ContentOrigin
          ViewerProtocolPolicy: 'https-only'
          # Using managed policies for optimal performance and simplicity
          CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6  # Managed-CachingOptimized
          OriginRequestPolicyId: 88a5eaf4-2fd4-4709-b370-b4c650ea3fcf # Managed-HostHeaderOnly
          ResponseHeadersPolicyId: eaab4381-ed33-4a86-88ca-d9558dc6cd63  # Managed-CORS-with-preflight-and-SecurityHeadersPolicy
          Compress: true
        
        # Define all the origins needed for the workflow
        Origins:
          # Main content origin (MediaPackage, Amazon S3, or Custom)
          - Id: ContentOrigin
            DomainName: !Ref ContentOriginDomainName
            # Apply Origin Access Control for secure origins
            OriginAccessControlId: !If [IsNotCustomOrigin, !GetAtt CloudFrontOriginAccessControl.Id, !Ref "AWS::NoValue"]
            # For custom origins, we need a CustomOriginConfig
            CustomOriginConfig:
              OriginProtocolPolicy: 'https-only'
              OriginSSLProtocols: 
                - TLSv1.2
              OriginKeepaliveTimeout: 5
              OriginReadTimeout: 30
              HTTPPort: 80
              HTTPSPort: 443
              
          # MediaTailor Manifests Origin - handles manifest manipulation for ad insertion
          - Id: MediaTailorManifests
            DomainName: !Sub 'manifests.mediatailor.${AWS::Region}.amazonaws.com'
            CustomOriginConfig:
              OriginProtocolPolicy: 'https-only'
              OriginSSLProtocols: 
                - TLSv1.2
              OriginKeepaliveTimeout: 5
              OriginReadTimeout: 30
            # Origin Shield improves caching efficiency 
            OriginShield:
              Enabled: true
              OriginShieldRegion: !Ref AWS::Region
              
          # MediaTailor Segments Origin - handles personalized ads
          - Id: MediaTailorSegments
            DomainName: !Sub 'segments.mediatailor.${AWS::Region}.amazonaws.com'
            CustomOriginConfig:
              OriginProtocolPolicy: 'https-only'
              OriginSSLProtocols: 
                - TLSv1.2
              OriginKeepaliveTimeout: 5
              OriginReadTimeout: 30
        
        # Cache behaviors to route specific request patterns to the right origin
        CacheBehaviors:
          # Handle MediaTailor segment requests for ad content which are cache-able
          - PathPattern: '/tm/*'
            TargetOriginId: MediaTailorSegments
            ViewerProtocolPolicy: 'https-only'
            CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6  # Managed-CachingOptimized
            OriginRequestPolicyId: 88a5eaf4-2fd4-4709-b370-b4c650ea3fcf  # Managed-HostHeaderOnly
            ResponseHeadersPolicyId: eaab4381-ed33-4a86-88ca-d9558dc6cd63  # Managed-CORS-with-preflight-and-SecurityHeadersPolicy
            Compress: true
            
          # Handle MediaTailor interstitial (SGAI) media requests which are cache-able
          - PathPattern: '/v1/i-media/*'
            TargetOriginId: MediaTailorManifests
            ViewerProtocolPolicy: 'https-only'
            CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6  # Managed-CachingOptimized
            OriginRequestPolicyId: 88a5eaf4-2fd4-4709-b370-b4c650ea3fcf  # Managed-HostHeaderOnly
            ResponseHeadersPolicyId: eaab4381-ed33-4a86-88ca-d9558dc6cd63  # Managed-CORS-with-preflight-and-SecurityHeadersPolicy
            Compress: true
            
          # Handle MediaTailor Personalized manifests which are not cache-able
          - PathPattern: '/v1/*'
            TargetOriginId: MediaTailorManifests
            ViewerProtocolPolicy: 'https-only'
            CachePolicyId: 4135ea2d-6df8-44a3-9df3-4b5a84be39ad # Managed-CachingDisabled
            OriginRequestPolicyId: 59781a5b-3903-41f3-afcb-af62929ccde1 # Managed-AllViewer
            ResponseHeadersPolicyId: eaab4381-ed33-4a86-88ca-d9558dc6cd63  # Managed-CORS-with-preflight-and-SecurityHeadersPolicy
            Compress: true
            
          # Handle MediaTailor segment *redirect* requests which are not cache-able (used for server side reporting)
          - PathPattern: '/segment/*'
            TargetOriginId: MediaTailorManifests
            ViewerProtocolPolicy: 'https-only'
            CachePolicyId: 4135ea2d-6df8-44a3-9df3-4b5a84be39ad # Managed-CachingDisabled
            OriginRequestPolicyId: 59781a5b-3903-41f3-afcb-af62929ccde1 # Managed-AllViewer
            ResponseHeadersPolicyId: eaab4381-ed33-4a86-88ca-d9558dc6cd63  # Managed-CORS-with-preflight-and-SecurityHeadersPolicy
            Compress: true

Conditions:
  IsNotCustomOrigin: !Not [!Equals [!Ref ContentOriginType, 'custom']]

Outputs:
  CloudFrontDomainName:
    Description: Domain name of the CloudFront distribution
    Value: !GetAtt CloudFrontDistribution.DomainName
    
  HlsManifestUrl:
    Description: URL for HLS manifest with ads inserted (append your manifest path)
    Value: !Sub 'https://${CloudFrontDistribution.DomainName}${MediaTailorPlaybackConfig.HlsConfiguration.ManifestEndpointPrefix}'
    
  DashManifestUrl:
    Description: URL for DASH manifest with ads inserted (append your manifest path)
    Value: !Sub 'https://${CloudFrontDistribution.DomainName}${MediaTailorPlaybackConfig.DashConfiguration.ManifestEndpointPrefix}'
    
  MediaTailorPlaybackConfigName:
    Description: Name of the MediaTailor playback configuration
    Value: !Ref MediaTailorPlaybackConfig
```