Associar funções a distribuições - Amazon CloudFront

Associar funções a distribuições

Para usar uma função com uma distribuição, associe a função a um ou mais comportamentos de cache na distribuição. Você pode associar uma função a vários comportamentos de cache em várias distribuições.

É possível associar uma função a qualquer um dos seguintes itens:

  • Um comportamento de cache existente.

  • Um novo comportamento de cache em uma distribuição existente.

  • Um novo comportamento de cache em uma nova distribuição.

Quando você associa uma função a um comportamento de cache, você deve selecionar um tipo de evento. O tipo de evento determina quando o CloudFront executa a função.

É possível escolher entre os seguintes tipos de evento:

  • Solicitação do visualizador: a função é executada quando o CloudFront recebe uma solicitação de um visualizador.

  • Resposta do visualizador: a função é executada antes que o CloudFront retorne uma resposta ao visualizador.

Não é possível usar tipos de evento voltados para a origem (solicitação de origem e resposta de origem) com o CloudFront Functions. Em vez disso, você pode usar o Lambda@Edge. Para ter mais informações, consulte Eventos do CloudFront que podem acionar uma função do Lambda@Edge.

nota

Antes de associar uma função, você deve publicá-la na fase LIVE.

É possível associar uma função a uma distribuição no console do CloudFront ou à AWS Command Line Interface (AWS CLI). O procedimento a seguir mostra como associar uma função a um comportamento de cache existente.

Console
Como associar uma função a um comportamento de cache existente
  1. Faça login no console do CloudFront em https://console.aws.amazon.com/cloudfront/v4/home#/functions e selecione a página Funções.

  2. Escolha a função que você deseja associar.

  3. Na página Função, selecione a guia Publicar.

  4. Selecione a função Publish (Publicar).

  5. Escolha Add association. Na caixa de diálogo exibida, selecione uma distribuição, um tipo de evento e/ou um comportamento de cache.

    Para o tipo de evento, selecione quando deseja que essa função seja executada:

    • Solicitação do visualizador: execute a função sempre que o CloudFront receber uma solicitação.

    • Resposta do visualizador: execute a função sempre que o CloudFront exibir uma resposta.

  6. Para salvar a configuração, selecione Adicionar associação.

O CloudFront associa a distribuição à função. Aguarde alguns minutos para que a distribuição associada termine a implantação. É selecionar Visualizar distribuição na página de detalhes da função para conferir o andamento.

CLI
Como associar uma função a um comportamento de cache existente
  1. Abra a janela de linha de comando.

  2. Insira o comando a seguir para salvar a configuração da distribuição cujo comportamento de cache você deseja associar a uma função. Esse comando salva a configuração de distribuição em um arquivo chamado dist-config.yaml. Para usar esse comando, faça o seguinte:

    • Substitua DistributionID pelo ID da distribuição.

    • Execute o comando em uma linha. No exemplo, as quebras de linha são fornecidas para tornar o exemplo mais legível.

    aws cloudfront get-distribution-config \ --id DistributionID \ --output yaml > dist-config.yaml

    Quando o comando é bem-sucedido, a AWS CLI não retorna nenhuma saída.

  3. Abra o arquivo chamado dist-config.yaml que você criou. Edite o arquivo para fazer as alterações a seguir.

    1. Renomeie o campo ETag para IfMatch, mas não altere o valor do campo.

    2. No comportamento do cache, localize o objeto chamado FunctionAssociations. Atualize esse objeto para adicionar uma associação de função. A sintaxe YAML para uma associação de função se parece com o exemplo a seguir.

      • O exemplo a seguir mostra um tipo de evento de solicitação de visualizador (trigger). Para usar um tipo de evento de resposta do visualizador, substitua viewer-request por viewer-response.

      • Substitua arn:aws:cloudfront::111122223333:function/ExampleFunction pelo nome do recurso da Amazon (ARN) da função que você está associando a esse comportamento de cache. Para obter o ARN da função, você pode usar o comando aws cloudfront list-functions.

      FunctionAssociations: Items: - EventType: viewer-request FunctionARN: arn:aws:cloudfront::111122223333:function/ExampleFunction Quantity: 1
    3. Depois de fazer essas alterações, salve o arquivo.

  4. Use o comando a seguir para atualizar a distribuição, adicionando a associação de função. Para usar esse comando, faça o seguinte:

    • Substitua DistributionID pelo ID da distribuição.

    • Execute o comando em uma linha. No exemplo, as quebras de linha são fornecidas para tornar o exemplo mais legível.

    aws cloudfront update-distribution \ --id DistributionID \ --cli-input-yaml file://dist-config.yaml

    Quando o comando é bem-sucedido, você vê uma saída como a seguinte que descreve a distribuição que foi atualizada apenas com a associação de função. O exemplo de saída a seguir é truncado para legibilidade.

    Distribution: ARN: arn:aws:cloudfront::111122223333:distribution/EBEDLT3BGRBBW ... truncated ... DistributionConfig: ... truncated ... DefaultCacheBehavior: ... truncated ... FunctionAssociations: Items: - EventType: viewer-request FunctionARN: arn:aws:cloudfront::111122223333:function/ExampleFunction Quantity: 1 ... truncated ... DomainName: d111111abcdef8.cloudfront.net Id: EDFDVBD6EXAMPLE LastModifiedTime: '2021-04-19T22:39:09.158000+00:00' Status: InProgress ETag: E2VJGGQEG1JT8S

O Status da distribuição muda para InProgress enquanto a distribuição é reimplantada. Quando a nova configuração de distribuição atingir um local da borda do CloudFront, esse local começará a usar a função associada. Quando a distribuição estiver totalmente implantada, o Status mudará de volta para Deployed. Isso indica que a função do CloudFront associada está ativa em todos os locais da borda do CloudFront no mundo todo. Normalmente, isso demora alguns minutos.