

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Automatice MediaTailor una CDN con CloudFormation
<a name="automating-cdn-integration"></a>

La automatización AWS Elemental MediaTailor con una red de entrega de contenido (CDN) AWS CloudFormation optimiza el flujo de trabajo de inserción de anuncios y mejora la fiabilidad.

En esta sección, se muestra cómo utilizar AWS CloudFormation (la AWS infraestructura como servicio de código) para configurar AWS Elemental MediaTailor automáticamente una red de entrega de contenido (CDN). Si bien puede configurar esta integración manualmente como se describe en las secciones anteriores, su uso CloudFormation ahorra tiempo y reduce los errores al automatizar todo el proceso con una sola plantilla.

Si es la primera vez que lo usa CloudFormation, se trata de un servicio que le permite crear un archivo de plantilla que defina todos los recursos de AWS que necesita. Al implementar esta plantilla, crea y configura CloudFormation automáticamente esos recursos para garantizar que funcionen juntos correctamente.

Para obtener más información al respecto CloudFormation, consulte la [Guía del CloudFormation usuario](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html). Para obtener información sobre MediaTailor los tipos de recursos CloudFormation, consulte [AWS: Referencia MediaTailor de tipos de recursos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_MediaTailor.html).

**Topics**
+ [¿Por qué usar AWS CloudFormation](cloudformation-benefits.md)
+ [Preparación para la implementación](prepare-cloudformation-deployment.md)
+ [Implemente la plantilla de .](deploy-cloudformation-template.md)
+ [Utilice los recursos desplegados](use-deployed-resources.md)
+ [Pruebe y valide su implementación](test-validate-deployment.md)
+ [Solución de problemas de las implementaciones de](troubleshoot-deployment-issues.md)
+ [Personaliza la plantilla](customize-cloudformation-template.md)
+ [Referencia de la plantilla](cloudformation-template-reference.md)

# ¿Por qué usarlo CloudFormation para una MediaTailor integración de CDN
<a name="cloudformation-benefits"></a>

AWS Elemental MediaTailor la automatización AWS CloudFormation ofrece ventajas significativas para los profesionales de la radiodifusión que gestionan los flujos de trabajo de streaming. La configuración manual MediaTailor con una red de entrega de contenido (CDN) puede llevar mucho tiempo y ser propensa a errores. El uso de la CloudFormation automatización ofrece las siguientes ventajas.
+ **Coherencia**: garantiza que se implemente siempre la misma configuración, lo que reduce los errores humanos.
+ **Control de versiones**: almacene su infraestructura como código en un sistema de control de versiones para realizar un seguimiento de los cambios.
+ **Despliegue rápido**: Implemente configuraciones complejas en cuestión de minutos en lugar de horas de configuración manual.
+ **Replicación del entorno**: replique fácilmente las configuraciones en los entornos de desarrollo, pruebas y producción.
+ **Documentación**: La plantilla en sí misma sirve como documentación de su infraestructura.

Así es como se compara el flujo de trabajo automatizado con la configuración manual:


| Configuración manual (varios pasos) | Configuración automatizada (plantilla única) | 
| --- | --- | 
| Cree la configuración MediaTailor de reproducción | Implemente una CloudFormation plantilla con parámetros | 
| Crea una CloudFront distribución | 
| Configure los comportamientos de la caché | 
| Configure las configuraciones de seguridad | 

El flujo de trabajo automatizado para MediaTailor la configuración CloudFront sigue estos pasos:

1. Implemente la CloudFormation plantilla con el origen del contenido y los parámetros del servidor de anuncios

1. CloudFormation crea y configura todos los recursos necesarios:
   + MediaTailor configuración de reproducción para la inserción de anuncios
   + CloudFront distribución con los comportamientos de caché adecuados
   + Configuraciones de seguridad para la protección del contenido

1. Usa los CloudFormation resultados para acceder a tu transmisión con publicidad URLs

1. Transmite tu contenido con anuncios insertados dinámicamente

# Prepárese para el CloudFormation despliegue de la CDN y MediaTailor las integraciones
<a name="prepare-cloudformation-deployment"></a>

AWS Elemental MediaTailor la implementación AWS CloudFormation requiere requisitos previos y pasos de preparación específicos. Antes de empezar CloudFormation a trabajar con Amazon para integrar MediaTailor y Amazon CloudFront, asegúrate de tener lo siguiente.
+ Una AWS cuenta con permisos MediaTailor de CloudFront creación y CloudFormation recursos
+ Un origen de contenido en el que esté alojado el contenido de vídeo (por ejemplo AWS Elemental MediaPackage, Amazon S3 u otro servidor de origen)
+ Un servidor de decisiones publicitarias (ADS) que pueda responder a las solicitudes de VAST

Antes de implementar la CloudFormation plantilla, reúna estos parámetros necesarios:

`AdServerUrl`  
URL del servidor de anuncios VAST para la inserción dinámica de anuncios. Se proporciona un punto final VAST estático para realizar pruebas.

`ContentOriginDomainName`  
Nombre de dominio del origen de tu contenido sin protocolo (p. ej.*mediapackage-domain.mediapackagev2.us-west-2.amazonaws.com*,*mybucket.s3.amazonaws.com*,, o*custom-origin.example.com*). No incluyas prefijos http://o https://ni ninguna ruta.

`ContentOriginType`  
El tipo de origen del contenido:  
+ *mediapackagev2*: Para orígenes AWS Elemental MediaPackage 
+ *s3*: Para los orígenes de los buckets de Amazon S3
+ *personalizado*: para cualquier otro tipo de origen

La plantilla creará varios AWS recursos que funcionarán juntos para ofrecer tu contenido con anuncios personalizados. A continuación se describe lo que hace cada componente:

## Control de acceso a Origin
<a name="origin-access-control-resource"></a>

El control de acceso de Origin (OAC) es una función de seguridad que garantiza que solo se pueda acceder a tu contenido a través de tu servidor de origen CloudFront, y no directamente desde él. Esto ayuda a proteger tu contenido del acceso no autorizado.

Para MediaPackage los orígenes de Amazon S3, la plantilla crea un recurso de Origin Access Control (OAC) para proteger el acceso a su contenido. 

## MediaTailor configuración de reproducción
<a name="mediatailor-resource"></a>

La configuración MediaTailor de reproducción es el componente principal que gestiona la inserción de anuncios. Recibe el contenido de tu origen, solicita anuncios a tu servidor de anuncios y los combina en una transmisión personalizada para cada espectador.

La plantilla crea una configuración de MediaTailor reproducción con los siguientes ajustes:
+ Fuente de contenido de vídeo que apunta a su CloudFront distribución
+ URL del servidor de decisiones publicitarias configurada para el punto final VAST especificado
+ Configuración previa a la reproducción en directo para la inserción de anuncios durante las retransmisiones en directo
+ Configuración de CDN con los prefijos de URL de segmento adecuados

## CloudFront distribución
<a name="cloudfront-resource"></a>

La CloudFront distribución entrega su contenido a los espectadores de todo el mundo con baja latencia. Gestiona diferentes tipos de solicitudes (manifiestos, segmentos de contenido, segmentos de anuncios) y las dirige a los orígenes correspondientes.

Para los nuevos profesionales de la radiodifusión CDNs, estos son algunos términos clave:

Origen  
Un servidor donde se almacena el contenido original (como MediaPackage Amazon S3)

Comportamiento de la caché  
Reglas que determinan cómo se almacenan en caché y se entregan los diferentes tipos de contenido

Política de caché  
Configuraciones que controlan cuánto tiempo se almacena en caché el contenido y qué componentes de la solicitud afectan al almacenamiento en caché

La plantilla crea una CloudFront distribución con los siguientes componentes:
+ Tres orígenes:
  + Origen del contenido (MediaPackageAmazon S3 o personalizado)
  + MediaTailor el origen del manifiesto
  + MediaTailor origen de los segmentos
+ Comportamientos en caché con los patrones adecuados:
  + Comportamiento predeterminado de los segmentos de contenido
  + Comportamiento de los segmentos de MediaTailor anuncios (/tm/\$1)
  + Comportamiento de los medios MediaTailor intersticiales (/v1/i-media/\$1)
  + Comportamiento de los manifiestos personalizados (/v1/\$1)
  + Comportamiento de las solicitudes de redireccionamiento de segmentos (/segment/\$1)
+ Políticas de caché optimizadas para cada comportamiento:
  + `CachingOptimized`para contenido que se puede almacenar en caché
  + `CachingDisabled`para manifiestos personalizados
+ Políticas de solicitud de Origin para garantizar un reenvío adecuado de los encabezados
+ Políticas de encabezados de respuesta para la compatibilidad con CORS

# Implemente la CloudFormation plantilla para la CDN y las integraciones MediaTailor
<a name="deploy-cloudformation-template"></a>

AWS Elemental MediaTailor el despliegue mediante la AWS CloudFormation plantilla es sencillo una vez que se entiende lo que se va a crear con la plantilla. Este proceso tarda entre 15 y 30 minutos, y la mayor parte del tiempo se dedica a esperar a que se despliegue la CloudFront distribución.

Para implementar la CloudFormation plantilla y configurar tu flujo de trabajo de inserción de anuncios automatizado, sigue estos pasos:

**Para implementar la MediaTailor CloudFormation plantilla**

1. Descargue la CloudFormation plantilla del AWS Elemental MediaTailor GitHub repositorio o cópiela del[AWS CloudFormation referencia de plantilla para una AWS Elemental MediaTailor CloudFront integración con Amazon](cloudformation-template-reference.md).

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

1. Seleccione **Crear pila** > **Con nuevos recursos (estándar)**.

1. En **Especificar plantilla**, selecciona **Cargar un archivo de plantilla** y carga la plantilla.

1. Introduzca un nombre de pila y proporcione valores para los parámetros necesarios:
   + **AdServerUrl**: URL de su servidor de anuncios VAST (por ejemplo, https://*your-ad-server.com*/vast)
   + **ContentOriginDomainName**: nombre de dominio del origen de tu contenido sin protocolo (por ejemplo,*mediapackage-domain.mediapackagev2.us-west-2.amazonaws.com*)
   + **ContentOriginType**: Seleccione el tipo de origen del contenido:
     + *mediapackagev2*: Para orígenes AWS Elemental MediaPackage 
     + *s3*: Para los orígenes de los buckets de Amazon S3
     + *personalizado*: para cualquier otro tipo de origen

1. Revise la configuración y elija **Crear pila**.

1. Espere a que se complete la creación de la pila, lo que suele tardar entre 5 y 10 minutos. Puedes supervisar el progreso en la pestaña **Eventos**.

1. Una vez completado, dirígete a **la pestaña Resultados** URLs para encontrar los manifiestos HLS y DASH.

**nota**  
Si los utilizas AWS Elemental MediaPackage como origen del contenido, asegúrate de que los MediaPackage puntos finales estén correctamente configurados y sean accesibles. Para obtener más información, consulte [MediaPackage Integración de CDN](mediapackage-integration.md).

# Usa los recursos CloudFormation desplegados para la CDN y la integración MediaTailor
<a name="use-deployed-resources"></a>

AWS Elemental MediaTailor los recursos que despliega la AWS CloudFormation pila proporcionan varios resultados importantes que utilizarás para acceder a tu contenido con la inserción de anuncios. Una vez que la CloudFormation pila se haya creado correctamente, tendrás que saber cómo utilizar los resultados para acceder al contenido con los anuncios insertados. Esto es similar a lo que se utilizaría MediaTailor URLs en una configuración manual, pero la CloudFormation implementación los proporciona URLs automáticamente.

Tras una implementación correcta, la CloudFormation pila proporciona varios resultados importantes que utilizarás para acceder al contenido con la inserción de anuncios:

`CloudFrontDomainName`  
El nombre de dominio de tu CloudFront distribución (por ejemplo,*d1234abcdef.CloudFront.net*)

`HlsManifestUrl`  
URL base para los manifiestos HLS con inserción de anuncios (p. ej., https://*d1234abcdef.CloudFront.net**12345*/v1/master///) *my-playback-config*

`DashManifestUrl`  
URL base para los manifiestos de DASH con inserción de anuncios (p. ej., https:///v1/dash///) *d1234abcdef.CloudFront.net* *12345* *my-playback-config*

`MediaTailorPlaybackConfigName`  
Nombre de la configuración de MediaTailor reproducción creada (por ejemplo,) *my-stack-PlaybackConfig*

## Construya la reproducción URLs
<a name="construct-playback-urls"></a>

Para crear la URL de reproducción completa de tu contenido con anuncios, tendrás que combinar la URL base de los CloudFormation resultados con tu ruta de manifiesto específica. Es un paso fundamental que deben entender los profesionales de la radiodifusión, ya que conecta tu contenido existente con el sistema de inserción de anuncios.

1. Empieza con la URL del manifiesto correspondiente de los resultados:

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

1. Añade tu ruta de manifiesto específica:

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

1. La URL de reproducción completa pasa a ser:

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

Usa esta URL en tu reproductor de vídeo para reproducir contenido con anuncios insertados de forma dinámica.

**sugerencia**  
Si no estás seguro de cuál debe ser la ruta de tu manifiesto, consulta tu servidor de origen. En el MediaPackage caso de los orígenes, esta es la ruta al manifiesto HLS o DASH de tu punto final. Para los orígenes de Amazon S3, esta es la ruta al archivo de manifiesto dentro del bucket.

Para obtener más información sobre MediaTailor la estructura de las URL, consulte[Configure la integración de CDN con MediaTailor](cdn-configuration.md).

## Configurar un reproductor de vídeo
<a name="configure-video-player"></a>

Una vez que tengas la URL de reproducción, tendrás que configurar un reproductor de vídeo para poder usarla. Para los profesionales de la radiodifusión, esto es similar a configurar un reproductor para cualquier transmisión HLS o DASH, pero ahora la transmisión incluirá anuncios personalizados. He aquí un ejemplo sencillo en el que se utiliza este popular HLS.js  reproductor:

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

También puedes usar reproductores de retransmisión profesionales como:
+ JW Player
+ Jugador Bitmovin
+ THEOplayer
+ Video.js

Para obtener más información sobre la integración del reproductor con MediaTailor, consulte. [MediaTailor requisitos de integración del servidor de anuncios](vast.md)

# Pruebe y valide su CloudFormation implementación para la integración y MediaTailor la CDN
<a name="test-validate-deployment"></a>

AWS Elemental MediaTailor la validación del despliegue es un paso fundamental para los profesionales de la radiodifusión antes de su puesta en marcha. En esta sección, se explica cómo probar la implementación para garantizar que los anuncios se insertan correctamente y el contenido se distribuye sin problemas.

Tras implementar la CloudFormation plantilla, sigue estos pasos para comprobar que la configuración funciona correctamente:

**Para probar su CloudFront integración con MediaTailor la red**

1. Compruebe que todos los recursos se hayan creado correctamente en la CloudFormation consola.

1. Compruebe que la configuración de MediaTailor reproducción esté activa en la [MediaTailor consola](https://console.aws.amazon.com/mediatailor/home).

1. Compruebe que la CloudFront distribución esté implementada y habilitada en la [CloudFront consola](https://console.aws.amazon.com/CloudFront/home).

1. Pruebe la reproducción con un ejemplo de manifiesto:

   1. Cree la URL de reproducción completa como se describe en[Construya la reproducción URLs](use-deployed-resources.md#construct-playback-urls).

   1. Usa un reproductor de vídeo compatible con HLS o DASH (como VLC, JW Player o el reproductor de AWS consola).

   1. Comprueba que el contenido se reproduce y los anuncios se insertan en los puntos de interrupción esperados.

1. Comprueba si hay errores de inserción CloudWatch de anuncios en los inicios de MediaTailor sesión.

Cuando pruebes la inserción de anuncios, busca estos indicadores de éxito:
+ Transiciones fluidas entre el contenido y los anuncios
+ Los anuncios aparecen en los puntos de interrupción esperados (antes de la tirada, a mitad de la tirada, después de la tirada)
+ La calidad de los anuncios coincide con la calidad del contenido
+ No hay errores de reproducción ni almacenamiento en búfer durante las transiciones de los anuncios

Para obtener procedimientos de prueba más detallados, consulte. [Entender AWS Elemental MediaTailor el comportamiento de inserción de anuncios](ad-behavior.md) Para obtener información completa sobre las pruebas y la validación de la integración de la CDN, consulte[Pruebas y validación de CDN e MediaTailor integraciones](cdn-integration-testing.md).

# Solucione problemas comunes de CloudFormation implementación de CDN e integraciones MediaTailor
<a name="troubleshoot-deployment-issues"></a>

AWS Elemental MediaTailor Los problemas de despliegue pueden producirse incluso con la automatización durante el despliegue o la reproducción. Como profesional de la radiodifusión, saber cómo solucionar estos problemas te ayudará a mantener un servicio de streaming fiable con la inserción de anuncios.

Si tienes problemas con la CloudFormation implementación o con la CloudFront integración resultante MediaTailor , consulta estos problemas y soluciones habituales:

## CloudFormation problemas de despliegue
<a name="deployment-troubleshooting"></a>

La creación de la pila falla y aparece el error «No se pudo crear el recurso»  
**Causas posibles:**  
+ Formato de nombre de dominio de origen del contenido no válido
+ Permisos insuficientes para crear recursos
**Solución:** compruebe el error del recurso específico en la pestaña de CloudFormation eventos. Compruebe que el nombre de dominio de origen del contenido esté formateado correctamente sin prefijos ni rutas de protocolo. Asegúrese de que su función de IAM tenga los permisos suficientes para crear todos los recursos necesarios.

CloudFront la distribución tarda mucho tiempo en implementarse  
**Causa:** CloudFront las distribuciones suelen tardar entre 15 y 30 minutos en desplegarse por completo.  
**Solución:** es normal. Espere a que la distribución alcance el estado «Implementada» antes de realizar la prueba.

## Problemas de reproducción e inserción de anuncios
<a name="playback-troubleshooting"></a>

El contenido se reproduce pero no se inserta ningún anuncio  
**Causas posibles:**  
+ El servidor de decisiones publicitarias no responde o devuelve un VAST vacío
+ El contenido no contiene marcadores de anuncios
**Solución:** compruebe que se puede acceder a su servidor de anuncios y que devuelva respuestas VAST válidas. Comprueba que tu contenido tenga los marcadores de anuncios adecuados (marcadores SCTE-35 para contenido en directo o etiquetas de pausas publicitarias para vídeo a la carta).

4.0.3 Errores prohibidos al acceder al contenido  
**Causas posibles:**  
+ El control de acceso a Origin no está configurado correctamente
+ Problemas con los permisos del bucket o del punto final de Origin
**Solución:** en el caso de los orígenes de Amazon S3, compruebe que la política de bucket permita el acceso desde la CloudFront distribución. En el caso de MediaPackage los orígenes, compruebe que el control de acceso al origen esté configurado correctamente y que se pueda acceder al punto final.

Errores de reproducción o almacenamiento en búfer  
**Causas posibles:**  
+ Los patrones de ruta de comportamiento de la caché no coinciden con las rutas del contenido
+ Configuración del dominio de origen incorrecta
**Solución:** compruebe que los comportamientos de la memoria caché tienen los patrones de ruta correctos para enrutar las solicitudes a los orígenes adecuados. Comprueba CloudFront los registros para ver qué origen gestiona las solicitudes y confirma que es el esperado.

Para los profesionales de la radiodifusión, estos consejos adicionales de solución de problemas pueden ser útiles:
+ Usa Amazon CloudWatch Logs Insights para buscar patrones de error específicos en los MediaTailor registros
+ Pruebe primero con un servidor de anuncios VAST simple (como el predeterminado que se proporciona en la plantilla) antes de usar su servidor de anuncios de producción
+ Verifica los marcadores de anuncios de tu contenido con la herramienta de inspección de MediaTailor manifiestos de la consola
+ Comprueba el tráfico de red en las herramientas para desarrolladores de tu navegador para comprobar si las solicitudes al servidor de anuncios se realizan correctamente

Para solucionar problemas adicionales, consulta los CloudWatch registros para ver si hay ambas CloudFront opciones MediaTailor e identifica errores específicos. 

# Personalice la CloudFormation plantilla para la CDN y MediaTailor las integraciones
<a name="customize-cloudformation-template"></a>

AWS Elemental MediaTailor la personalización de plantillas permite a los profesionales de la radiodifusión adaptar la AWS CloudFormation plantilla para adaptarla a los requisitos específicos del flujo de trabajo. Aunque la plantilla básica funciona en muchos escenarios, estas personalizaciones pueden ayudarle a abordar necesidades más complejas.

Los ejemplos siguientes muestran fragmentos de código YAML que puedes añadir a la plantilla. Si no estás familiarizado con el YAML o la CloudFormation sintaxis, considera la posibilidad de trabajar con un desarrollador o un arquitecto de AWS soluciones para realizar estos cambios.

Puede personalizar la CloudFormation plantilla para que cumpla con los requisitos específicos de su flujo de trabajo.

## Añada o modifique orígenes
<a name="add-modify-origins"></a>

Para los flujos de trabajo de transmisión que utilizan varias fuentes de contenido (como fuentes principales y de respaldo, o bibliotecas de contenido diferentes), puede añadir orígenes adicionales a la CloudFront distribución:

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

A continuación, añade el comportamiento de la caché correspondiente para enrutar patrones específicos a este origen:

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

## Cree políticas de caché personalizadas
<a name="create-custom-cache-policies"></a>

Para los flujos de trabajo de transmisión con requisitos de almacenamiento en caché específicos (como los parámetros de selección de calidad o la autenticación del espectador), puede crear políticas de caché personalizadas en lugar de utilizar las gestionadas. Para obtener una guía detallada sobre los valores de TTL y las estrategias de almacenamiento en caché, consulte. [Optimización del almacenamiento en caché para CDN e integraciones 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
```

## Mejore la configuración MediaTailor
<a name="enhance-mediatailor-config"></a>

Para los flujos de trabajo de transmisión que necesitan funciones avanzadas de inserción de anuncios, puedes mejorar la MediaTailor configuración con opciones como la captura previa de anuncios (para reducir la latencia), los umbrales de personalización y los anuncios bumper.

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

Para obtener más información sobre las opciones de MediaTailor configuración, consulte. [AWS Elemental MediaTailor Utilización para insertar anuncios](configurations.md)

## Añada funciones de seguridad
<a name="add-security-features"></a>

Para los flujos de trabajo de transmisión con requisitos de seguridad específicos (como las restricciones geográficas o la protección contra los ataques DDo S), puede añadir restricciones de AWS WAF integración y geográficas:

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

[Para obtener más información sobre las CloudFormation plantillas, consulte la Guía del usuario.AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)

Para ver CloudFormation plantillas y ejemplos específicos de emisiones, consulte el repositorio de herramientas de [servicios multimedia de AWS](https://github.com/aws-samples/aws-media-services-tools). GitHub 

# AWS CloudFormation referencia de plantilla para una AWS Elemental MediaTailor CloudFront integración con Amazon
<a name="cloudformation-template-reference"></a>

AWS Elemental MediaTailor la integración con Amazon se CloudFront puede automatizar mediante la siguiente AWS CloudFormation plantilla completa:

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