

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Automatize MediaTailor e CDN com CloudFormation
<a name="automating-cdn-integration"></a>

A automatização AWS Elemental MediaTailor com uma rede de distribuição de conteúdo (CDN) AWS CloudFormation simplifica seu fluxo de trabalho de inserção de anúncios e melhora a confiabilidade.

Esta seção mostra como usar AWS CloudFormation (AWS infraestrutura como serviço de código) para configurar automaticamente uma rede AWS Elemental MediaTailor de distribuição de conteúdo (CDN). Embora você possa configurar manualmente essa integração conforme descrito nas seções anteriores, o uso CloudFormation economiza tempo e reduz erros ao automatizar todo o processo com um único modelo.

Se você é novato CloudFormation, é um serviço que permite criar um arquivo de modelo que define todos os recursos da AWS de que você precisa. Quando você implanta esse modelo, cria e configura CloudFormation automaticamente esses recursos para você, garantindo que eles funcionem juntos corretamente.

Para obter mais informações sobre CloudFormation, consulte o [Guia CloudFormation do usuário](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html). Para obter informações sobre os tipos de MediaTailor recursos em CloudFormation, consulte [AWS: Referência do tipo de MediaTailor recurso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_MediaTailor.html).

**Topics**
+ [Por que usar AWS CloudFormation](cloudformation-benefits.md)
+ [Preparar-se para implantação](prepare-cloudformation-deployment.md)
+ [Implantação do modelo do](deploy-cloudformation-template.md)
+ [Use os recursos implantados](use-deployed-resources.md)
+ [Teste e valide sua implantação](test-validate-deployment.md)
+ [Solução de problemas de implantação do](troubleshoot-deployment-issues.md)
+ [Personalize o modelo](customize-cloudformation-template.md)
+ [Referência do modelo](cloudformation-template-reference.md)

# Por que usar CloudFormation para MediaTailor integração com CDN
<a name="cloudformation-benefits"></a>

AWS Elemental MediaTailor a automação AWS CloudFormation oferece vantagens significativas para profissionais de transmissão que gerenciam fluxos de trabalho de streaming. A configuração manual MediaTailor com uma rede de distribuição de conteúdo (CDN) pode ser demorada e propensa a erros. O uso da CloudFormation automação oferece as seguintes vantagens.
+ **Consistência**: garante que a mesma configuração seja sempre implantada, reduzindo o erro humano.
+ **Controle de versão**: armazene sua infraestrutura como código em um sistema de controle de versão para rastrear alterações.
+ **Implantação rápida**: implante configurações complexas em minutos, em vez de horas de configuração manual.
+ **Replicação do ambiente**: replique facilmente as configurações em ambientes de desenvolvimento, teste e produção.
+ **Documentação**: O modelo em si serve como documentação da sua infraestrutura.

Veja como o fluxo de trabalho automatizado se compara à configuração manual:


| Configuração manual (várias etapas) | Configuração automatizada (modelo único) | 
| --- | --- | 
| Criar MediaTailor configuração de reprodução | Implemente um CloudFormation modelo com parâmetros | 
| Crie uma CloudFront distribuição | 
| Configurar comportamentos de cache | 
| Definir configurações de segurança | 

O fluxo de trabalho automatizado para configuração MediaTailor CloudFront segue estas etapas:

1. Implante o CloudFormation modelo com sua origem de conteúdo e parâmetros do servidor de anúncios

1. CloudFormation cria e configura todos os recursos necessários:
   + MediaTailor configuração de reprodução para inserção de anúncios
   + CloudFront distribuição com comportamentos de cache apropriados
   + Configurações de segurança para proteção de conteúdo

1. Use as CloudFormation saídas para acessar seu stream habilitado para anúncios URLs

1. Transmita seu conteúdo com anúncios inseridos dinamicamente

# Prepare-se para a CloudFormation implantação de CDN e MediaTailor integrações
<a name="prepare-cloudformation-deployment"></a>

AWS Elemental MediaTailor a implantação com AWS CloudFormation requer pré-requisitos específicos e etapas de preparação. Antes de começar a trabalhar com CloudFormation a integração MediaTailor com a Amazon CloudFront, verifique se você tem o seguinte.
+ Uma AWS conta com permissões para criar MediaTailor e CloudFormation recursos CloudFront
+ Uma origem de conteúdo na qual seu conteúdo de vídeo é hospedado (como AWS Elemental MediaPackage Amazon S3 ou outro servidor de origem)
+ Um servidor de decisão de anúncios (ADS) que pode responder a solicitações VAST

Antes de implantar o CloudFormation modelo, reúna estes parâmetros necessários:

`AdServerUrl`  
URL do servidor de anúncios VAST para inserção dinâmica de anúncios. Um endpoint VAST estático é fornecido para teste.

`ContentOriginDomainName`  
Nome de domínio da origem do seu conteúdo sem protocolo (por exemplo*mediapackage-domain.mediapackagev2.us-west-2.amazonaws.com*,*mybucket.s3.amazonaws.com*,, ou*custom-origin.example.com*). Não inclua prefixos http://ou https://nem nenhum caminho.

`ContentOriginType`  
O tipo de origem do conteúdo:  
+ *mediapackagev2*: Para origens AWS Elemental MediaPackage 
+ *s3*: Para origens de buckets do Amazon S3
+ *personalizado*: Para qualquer outro tipo de origem

O modelo criará vários AWS recursos que funcionam juntos para fornecer seu conteúdo com anúncios personalizados. A seguir, descrevemos o que cada componente faz:

## Controle de acesso do Origin
<a name="origin-access-control-resource"></a>

O Origin Access Control (OAC) é um recurso de segurança que garante que seu conteúdo só possa ser acessado por meio do servidor de origem CloudFront, e não diretamente dele. Isso ajuda a proteger seu conteúdo contra acesso não autorizado.

Para MediaPackage origens do Amazon S3, o modelo cria um recurso Origin Access Control (OAC) para proteger o acesso ao seu conteúdo. 

## MediaTailor configuração de reprodução
<a name="mediatailor-resource"></a>

A configuração de MediaTailor reprodução é o componente principal que manipula a inserção de anúncios. Ele recebe conteúdo de sua origem, solicita anúncios do seu servidor de anúncios e os combina em um fluxo personalizado para cada espectador.

O modelo cria uma configuração de MediaTailor reprodução com as seguintes configurações:
+ Fonte de conteúdo de vídeo apontando para sua CloudFront distribuição
+ URL do servidor de decisão de anúncio configurado para seu endpoint VAST especificado
+ Configuração de pré-lançamento ao vivo para inserção de anúncios durante transmissões ao vivo
+ Configuração de CDN com prefixos de URL de segmento apropriados

## CloudFront distribuição
<a name="cloudfront-resource"></a>

A CloudFront distribuição entrega seu conteúdo para espectadores em todo o mundo com baixa latência. Ele lida com diferentes tipos de solicitações (manifestos, segmentos de conteúdo, segmentos de anúncios) e as encaminha para as origens apropriadas.

Para profissionais de radiodifusão CDNs iniciantes, aqui estão alguns termos-chave:

Origem  
Um servidor onde seu conteúdo original é armazenado (como MediaPackage o Amazon S3)

Comportamento de cache  
Regras que determinam como diferentes tipos de conteúdo são armazenados em cache e entregues

Política de cache  
Configurações que controlam por quanto tempo o conteúdo é armazenado em cache e quais componentes da solicitação afetam o armazenamento em cache

O modelo cria uma CloudFront distribuição com os seguintes componentes:
+ Três origens:
  + Origem do conteúdo (MediaPackageAmazon S3 ou personalizado)
  + MediaTailor manifesta origem
  + MediaTailor origem dos segmentos
+ Comportamentos de cache com padrões apropriados:
  + Comportamento padrão para segmentos de conteúdo
  + Comportamento para segmentos de MediaTailor anúncios (/tm/\$1)
  + Comportamento para mídia MediaTailor intersticial (/v1/i-media/\$1)
  + Comportamento para manifestos personalizados (/v1/\$1)
  + Comportamento das solicitações de redirecionamento de segmentos (/segment/\$1)
+ Políticas de cache otimizadas para cada comportamento:
  + `CachingOptimized`para conteúdo armazenável em cache
  + `CachingDisabled`para manifestos personalizados
+ Políticas de solicitação de origem para garantir o encaminhamento adequado do cabeçalho
+ Políticas de cabeçalho de resposta para suporte ao CORS

# Implante o CloudFormation modelo para CDN e integrações MediaTailor
<a name="deploy-cloudformation-template"></a>

AWS Elemental MediaTailor a implantação usando o AWS CloudFormation modelo é simples quando você entende o que o modelo criará. Esse processo leva cerca de 15 a 30 minutos, com a maior parte do tempo aguardando a implantação da CloudFront distribuição.

Para implantar o CloudFormation modelo e configurar seu fluxo de trabalho automatizado de inserção de anúncios:

**Para implantar o MediaTailor CloudFormation modelo**

1. Baixe o CloudFormation modelo do AWS Elemental MediaTailor GitHub repositório ou copie-o do[AWS CloudFormation referência de modelo AWS Elemental MediaTailor e CloudFront integração com a Amazon](cloudformation-template-reference.md).

1. Abra o [console do CloudFormation](https://console.aws.amazon.com/cloudformation/home).

1. Escolha **Criar pilha** > **Com novos recursos (padrão)**.

1. Em **Especificar modelo**, escolha **Carregar um arquivo de modelo** e fazer upload do modelo.

1. Insira o nome da pilha e forneça valores para os parâmetros necessários:
   + **AdServerUrl**: URL do seu servidor de anúncios VAST (por exemplo, https://*your-ad-server.com*/vast)
   + **ContentOriginDomainName**: nome de domínio da origem do seu conteúdo sem protocolo (por exemplo,*mediapackage-domain.mediapackagev2.us-west-2.amazonaws.com*)
   + **ContentOriginType**: Selecione o tipo de origem do conteúdo:
     + *mediapackagev2*: Para origens AWS Elemental MediaPackage 
     + *s3*: Para origens de buckets do Amazon S3
     + *personalizado*: Para qualquer outro tipo de origem

1. Revise a configuração e escolha **Criar pilha**.

1. Aguarde a conclusão da criação da pilha, o que normalmente leva de 5 a 10 minutos. Você pode monitorar o progresso na guia **Eventos**.

1. Depois de concluído, navegue até a guia **Saídas** para encontrar os manifestos URLs HLS e DASH.

**nota**  
Se você estiver usando AWS Elemental MediaPackage como origem de conteúdo, certifique-se de que seus MediaPackage endpoints estejam configurados e acessíveis adequadamente. Para obter mais informações, consulte [MediaPackage Integração CDN](mediapackage-integration.md).

# Use os recursos CloudFormation implantados para CDN e integração MediaTailor
<a name="use-deployed-resources"></a>

AWS Elemental MediaTailor os recursos implantados pela AWS CloudFormation pilha fornecem vários resultados importantes que você usará para acessar seu conteúdo com a inserção de anúncios. Depois que a CloudFormation pilha for criada com sucesso, você precisará entender como usar as saídas para acessar seu conteúdo com anúncios inseridos. Isso é semelhante ao que você usaria MediaTailor URLs em uma configuração manual, mas a CloudFormation implantação os fornece URLs automaticamente.

Após a implantação bem-sucedida, a CloudFormation pilha fornece vários resultados importantes que você usará para acessar seu conteúdo com a inserção de anúncios:

`CloudFrontDomainName`  
O nome de domínio da sua CloudFront distribuição (por exemplo,*d1234abcdef.CloudFront.net*)

`HlsManifestUrl`  
URL base para manifestos HLS com inserção de anúncios (por exemplo, https://*d1234abcdef.CloudFront.net**12345*/v1/master///) *my-playback-config*

`DashManifestUrl`  
URL base para manifestos DASH com inserção de anúncios (por exemplo, https://*d1234abcdef.CloudFront.net**12345*/v1/dash///) *my-playback-config*

`MediaTailorPlaybackConfigName`  
Nome da configuração de MediaTailor reprodução criada (como*my-stack-PlaybackConfig*)

## Construa a reprodução URLs
<a name="construct-playback-urls"></a>

Para criar o URL de reprodução completo do seu conteúdo com anúncios, você precisará combinar o URL base das CloudFormation saídas com seu caminho de manifesto específico. Essa é uma etapa fundamental para os profissionais de radiodifusão entenderem, pois ela conecta seu conteúdo existente ao sistema de inserção de anúncios.

1. Comece com o URL de manifesto apropriado a partir das saídas:

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

1. Anexe seu caminho de manifesto específico:

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

1. O URL de reprodução completo se torna:

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

Use esse URL no seu player de vídeo para reproduzir conteúdo com anúncios inseridos dinamicamente.

**dica**  
Se você não tiver certeza de qual deve ser o caminho do manifesto, verifique seu servidor de origem. Para MediaPackage origens, esse é o caminho para o manifesto HLS ou DASH do seu endpoint. Para origens do Amazon S3, esse é o caminho para seu arquivo de manifesto dentro do bucket.

Para obter mais informações sobre a estrutura de MediaTailor URL, consulte[Configure a integração da CDN com MediaTailor](cdn-configuration.md).

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

Depois de ter seu URL de reprodução, você precisa configurar um player de vídeo para usá-lo. Para profissionais de transmissão, isso é semelhante à configuração de um player para qualquer stream HLS ou DASH, mas agora o stream incluirá anúncios personalizados. Aqui está um exemplo simples usando o popular HLS.js  player:

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

Você também pode usar reprodutores de transmissão profissionais como:
+ Jogador JW
+ Jogador Bitmovin
+ THEOplayer
+ Video.js

Para obter mais informações sobre a integração do player com MediaTailor, consulte[MediaTailor requisitos de integração do servidor de anúncios](vast.md).

# Teste e valide sua CloudFormation implantação para CDN e integração MediaTailor
<a name="test-validate-deployment"></a>

AWS Elemental MediaTailor a validação da implantação é uma etapa crítica para os profissionais de radiodifusão antes da transmissão ao vivo. Esta seção orienta você a testar sua implantação para garantir que os anúncios sejam inseridos corretamente e que o conteúdo seja entregue sem problemas.

Depois de implantar o CloudFormation modelo, siga estas etapas para verificar se sua configuração está funcionando corretamente:

**Para testar sua MediaTailor CloudFront integração**

1. Verifique se todos os recursos foram criados com êxito no CloudFormation console.

1. Verifique se a configuração de MediaTailor reprodução está ativa no [MediaTailor console](https://console.aws.amazon.com/mediatailor/home).

1. Verifique se a CloudFront distribuição está implantada e habilitada no [CloudFront console](https://console.aws.amazon.com/CloudFront/home).

1. Teste a reprodução usando um exemplo de manifesto:

   1. Crie o URL de reprodução completo conforme descrito em[Construa a reprodução URLs](use-deployed-resources.md#construct-playback-urls).

   1. Use um player de vídeo compatível com HLS ou DASH (como VLC, JW Player ou console player). AWS 

   1. Verifique se o conteúdo é reproduzido e os anúncios são inseridos nos pontos de interrupção esperados.

1. Verifique se há erros de inserção de anúncios nos MediaTailor CloudWatch logins.

Ao testar a inserção de anúncios, procure esses indicadores de sucesso:
+ Transições suaves entre conteúdo e anúncios
+ Os anúncios aparecem nos pontos de interrupção esperados (pré-lançamento, meio lançamento, pós-lançamento)
+ A qualidade do anúncio corresponde à qualidade do conteúdo
+ Sem erros de buffer ou reprodução durante as transições de anúncios

Para obter procedimentos de teste mais detalhados, consulte[Compreender o AWS Elemental MediaTailor comportamento de inserção de anúncios](ad-behavior.md). Para testes e validação abrangentes da integração de CDN, consulte[Teste e validação para CDN e integrações MediaTailor](cdn-integration-testing.md).

# Solucione problemas comuns CloudFormation de implantação para CDN e integrações MediaTailor
<a name="troubleshoot-deployment-issues"></a>

AWS Elemental MediaTailor problemas de implantação podem ocorrer mesmo com a automação durante a implantação ou a reprodução. Como profissional de radiodifusão, entender como solucionar esses problemas ajudará você a manter um serviço de streaming confiável com inserção de anúncios.

Se você encontrar problemas com sua CloudFormation implantação ou com o resultado MediaTailor e a CloudFront integração, consulte estes problemas e soluções comuns:

## CloudFormation problemas de implantação
<a name="deployment-troubleshooting"></a>

A criação da pilha falha com o erro “Falha na criação do recurso”  
**Causas possíveis:**  
+ Formato de nome de domínio de origem de conteúdo inválido
+ Permissões insuficientes para criar recursos
**Solução:** verifique o erro específico do recurso na guia de CloudFormation eventos. Verifique se o nome do domínio de origem do conteúdo está formatado corretamente sem prefixos ou caminhos de protocolo. Certifique-se de que sua função do IAM tenha permissões suficientes para criar todos os recursos necessários.

CloudFront a distribuição leva muito tempo para ser implantada  
**Causa:** CloudFront as distribuições normalmente levam de 15 a 30 minutos para serem totalmente implantadas.  
**Solução:** Este é o comportamento normal. Aguarde até que a distribuição alcance o estado “Implantado” antes de testar.

## Problemas de reprodução e inserção de anúncios
<a name="playback-troubleshooting"></a>

O conteúdo é reproduzido, mas nenhum anúncio é inserido  
**Causas possíveis:**  
+ O servidor de decisão de anúncios não está respondendo ou retorna um VAST vazio
+ O conteúdo não contém marcadores de anúncios
**Solução:** verifique se seu servidor de anúncios está acessível e está retornando respostas VAST válidas. Verifique se seu conteúdo tem marcadores de anúncio adequados (marcadores SCTE-35 para conteúdo ao vivo ou tags de quebra de anúncio para VOD).

403 Erros proibidos ao acessar o conteúdo  
**Causas possíveis:**  
+ O controle de acesso do Origin não está configurado corretamente
+ Problemas de permissões de bucket ou endpoint do Origin
**Solução:** Para origens do Amazon S3, verifique se a política de bucket permite acesso a partir da CloudFront distribuição. Para MediaPackage origens, verifique se o controle de acesso de origem está configurado corretamente e se o endpoint está acessível.

Erros de reprodução ou armazenamento em buffer  
**Causas possíveis:**  
+ Os padrões de caminho de comportamento do cache não correspondem aos caminhos de conteúdo
+ Configuração incorreta do domínio de origem
**Solução:** verifique se seus comportamentos de cache têm os padrões de caminho corretos para encaminhar as solicitações para as origens apropriadas. Verifique CloudFront os registros para ver qual origem está lidando com as solicitações e confirme se é a esperada.

Para profissionais de radiodifusão, essas dicas adicionais de solução de problemas podem ajudar:
+ Use o Amazon CloudWatch Logs Insights para pesquisar padrões de erro específicos nos MediaTailor registros
+ Teste primeiro com um servidor de anúncios VAST simples (como o padrão fornecido no modelo) antes de usar seu servidor de anúncios de produção
+ Verifique os marcadores de anúncios do seu conteúdo usando a ferramenta de inspeção de MediaTailor manifestos no console
+ Verifique o tráfego de rede nas ferramentas de desenvolvedor do seu navegador para ver se as solicitações ao servidor de anúncios estão sendo feitas corretamente

Para solucionar problemas adicionais, verifique os CloudWatch registros MediaTailor e CloudFront identifique erros específicos. 

# Personalize o CloudFormation modelo para CDN e integrações MediaTailor
<a name="customize-cloudformation-template"></a>

AWS Elemental MediaTailor a personalização do modelo permite que os profissionais de radiodifusão adaptem o AWS CloudFormation modelo para atender aos requisitos específicos do fluxo de trabalho. Embora o modelo básico funcione para muitos cenários, essas personalizações podem ajudá-lo a atender a necessidades mais complexas.

Os exemplos abaixo mostram trechos de código YAML que você pode adicionar ao modelo. Se você não estiver familiarizado com o YAML ou a CloudFormation sintaxe, considere trabalhar com um desenvolvedor ou arquiteto de AWS soluções para fazer essas alterações.

Você pode personalizar o CloudFormation modelo para atender aos requisitos específicos do fluxo de trabalho.

## Adicionar ou modificar origens
<a name="add-modify-origins"></a>

Para fluxos de trabalho de transmissão que usam várias fontes de conteúdo (como fontes primárias e de backup, ou bibliotecas de conteúdo diferentes), você pode adicionar outras origens à sua CloudFront distribuição:

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

Em seguida, adicione um comportamento de cache correspondente para rotear padrões específicos para essa origem:

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

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

Para fluxos de trabalho de transmissão com requisitos específicos de armazenamento em cache (como parâmetros de seleção de qualidade ou autenticação do visualizador), você pode criar políticas de cache personalizadas em vez de usar as gerenciadas. Para obter orientação detalhada sobre valores de TTL e estratégias de armazenamento em cache, consulte. [Otimização de cache para CDN e integrações 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
```

## Aprimorar a MediaTailor configuração
<a name="enhance-mediatailor-config"></a>

Para fluxos de trabalho de transmissão que precisam de recursos avançados de inserção de anúncios, você pode aprimorar a MediaTailor configuração com opções como busca prévia de anúncios (para reduzir a latência), limites de personalização e anúncios 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 obter mais informações sobre MediaTailor as opções de configuração, consulte[Usando AWS Elemental MediaTailor para inserir anúncios](configurations.md).

## Adicione recursos de segurança
<a name="add-security-features"></a>

Para fluxos de trabalho de transmissão com requisitos de segurança específicos (como restrições geográficas ou proteção contra ataques DDo S), você pode adicionar AWS WAF integração e restrições 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 obter mais informações sobre CloudFormation modelos, consulte o [Guia AWS CloudFormation do usuário](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html).

Para CloudFormation modelos e exemplos específicos de transmissão, consulte o repositório de ferramentas de [serviços de mídia da AWS](https://github.com/aws-samples/aws-media-services-tools). GitHub 

# AWS CloudFormation referência de modelo AWS Elemental MediaTailor e CloudFront integração com a Amazon
<a name="cloudformation-template-reference"></a>

AWS Elemental MediaTailor a integração com a Amazon CloudFront pode ser automatizada usando o seguinte AWS CloudFormation modelo completo:

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