Visão geral e fluxo de trabalho - Amazon CloudFront

Visão geral e fluxo de trabalho

As funções de conexão do CloudFront são um tipo especializado de CloudFront Functions executadas durante o handshake do TLS quando um cliente tenta estabelecer uma conexão mTLS. A função de conexão pode acessar informações sobre certificados de cliente, os parâmetros de configuração da mTLS, os resultados da verificação de revogação de certificados e o endereço IP do cliente.

As funções de conexão são invocadas depois que o CloudFront realiza a validação padrão do certificado (cadeia de confiança, expiração e verificação de assinatura), mas podem ser executadas mesmo se as verificações de revogação de certificados falharem. Isso permite implementar uma lógica personalizada para lidar com certificados revogados ou adicionar outros critérios de validação.

Quando você criar e publicar uma função de conexão, adicione uma associação para o tipo de evento de solicitação de conexão com uma distribuição habilitada para mTLS. Isso faz com que a função seja executada sempre que um cliente tenta estabelecer uma conexão mTLS com o CloudFront.

As funções de conexão do CloudFront seguem um ciclo de vida de dois estágios que permite desenvolver e testar funções antes de implantá-las na produção. Esse fluxo de trabalho garante que as funções de conexão funcionem corretamente e não afetem o tráfego em tempo real.

Estágios da função

As funções de conexão podem estar em um de dois estágios:

  • DESENVOLVIMENTO: as funções neste estágio podem ser modificadas, testadas e atualizadas. Use esse estágio para escrever e depurar o código da função.

  • ATIVO: as funções neste estágio são somente leitura e lidam com o tráfego de produção. Não é possível modificar as funções diretamente no estágio ATIVO.

Quando você cria uma função de conexão, ela começa no estágio DESENVOLVIMENTO. Depois de testar e validar, você deve publicá-la para movê-la para o estágio ATIVO.

Fluxo de trabalho de desenvolvimento

Siga este fluxo de trabalho para desenvolver e implantar funções de conexão:

  1. Criar: crie uma função de conexão no estágio DESENVOLVIMENTO com seu código e configuração iniciais.

  2. Testar: antes da implantação, use a funcionalidade de teste para validar a função com exemplos de eventos de conexão.

  3. Atualizar: modifique o código e a configuração da função conforme necessário com base nos resultados do teste.

  4. Publicar: quando a função estiver pronta para produção, publique-a para movê-la do estágio DESENVOLVIMENTO para o ATIVO.

  5. Associar: associe a função publicada à sua distribuição habilitada para mTLS para lidar com conexões em tempo real.

Para fazer alterações em uma função ATIVA, é necessário atualizar a versão de DESENVOLVIMENTO e publicá-la novamente. Isso cria uma versão no estágio ATIVO.

Diferenças em relação a outros tipos de função

As funções de conexão diferem das funções de solicitação de visualizador e resposta ao visualizador de várias maneiras importantes:

  • As funções de conexão são executadas após o handshake do mTLS, antes que qualquer processamento HTTP ocorra.

  • As funções de conexão têm acesso às informações do certificado TLS, e não aos dados de solicitação/resposta HTTP.

  • As funções de conexão só podem permitir ou negar conexões, não modificar dados HTTP.

  • As funções de conexão são invocadas somente para novas conexões TLS, não para reutilização de conexão.

  • Para garantir que a validação de certificados ocorra em todas as conexões, não é possível retomar a sessão TLS na mTLS.

  • As funções de conexão são executadas complementarmente às funções padrão de solicitação de visualizador e resposta ao visualizador.

  • As funções de conexão são associadas em nível de distribuição, em vez de em nível de comportamento de cache.

  • É possível usar funções de conexão somente com o Runtime 2.0 do JavaScript.