Determinar o propósito da função
Antes de escrever seu código de função, determine o propósito da sua função. A maioria das funções no CloudFront Functions tem uma das seguintes finalidades.
Tópicos
Independentemente do propósito da sua função, o handler é o ponto de entrada para qualquer função. É preciso um único argumento chamado event, que é passado para a função pelo CloudFront. O event é um objeto JSON que contém uma representação da solicitação HTTP (e a resposta, se sua função modificar a resposta HTTP).
Modificar a solicitação HTTP em um tipo de evento de solicitação do visualizador
Sua função pode modificar a solicitação HTTP que o CloudFront recebe do visualizador (cliente) e retornar a solicitação modificada ao CloudFront para processamento contínuo. Por exemplo, seu código de função pode normalizar a chave de cache ou modificar cabeçalhos de solicitação.
Quando você criar e publicar uma função que modifica a solicitação HTTP, adicione uma associação para o tipo de evento viewer request. Para ter mais informações, consulte Criar a função. Isso faz com que a função seja executada sempre que o CloudFront receber uma solicitação de um visualizador, antes de verificar se o objeto solicitado está no cache do CloudFront.
exemplo Exemplo
O pseudocódigo a seguir mostra a estrutura de uma função que modifica a solicitação HTTP.
function handler(event) { var request = event.request; // Modify the request object here. return request; }
A função retorna o objeto request modificado para o CloudFront. O CloudFront continua processando a solicitação retornada verificando o cache do CloudFront quanto a uma ocorrência de cache e enviando a solicitação para a origem, se necessário.
Gerar uma resposta HTTP em um tipo de evento de solicitação do visualizador
Sua função pode gerar uma resposta HTTP na borda e retorná-la diretamente ao visualizador (cliente) sem verificar se há uma resposta em cache ou qualquer processamento adicional pelo CloudFront. Por exemplo, seu código de função pode redirecionar a solicitação para uma nova URL ou verificar se há autorização e retornar uma resposta 401 ou 403 a solicitações não autorizadas.
Quando você criar uma função que gera uma resposta HTTP, certifique-se de selecionar o tipo de evento viewer request (solicitação do visualizador). Isso significa que a função é executada sempre que o CloudFront recebe uma solicitação de um visualizador, antes que o CloudFront faça qualquer processamento adicional da solicitação.
exemplo Exemplo
O pseudocódigo a seguir mostra a estrutura de uma função que gera uma resposta HTTP.
function handler(event) { var request = event.request; var response = ...; // Create the response object here, // using the request properties if needed. return response; }
A função retorna um objeto response ao CloudFront, que o CloudFront retorna imediatamente ao visualizador sem verificar o cache do CloudFront ou enviar uma solicitação para a origem.
Modificar a resposta HTTP em um tipo de evento de resposta do visualizador
Sua função pode modificar a resposta HTTP antes que o CloudFront a envie para o visualizador (cliente), independentemente de a resposta vir do cache do CloudFront ou da origem. Por exemplo, o código da função pode adicionar ou modificar cabeçalhos de resposta, códigos de status e o conteúdo do corpo.
Ao criar uma função que modifica a resposta HTTP, certifique-se de selecionar o tipo de evento de viewer response (resposta do visualizador). Isso significa que a função é executada antes que o CloudFront retorne uma resposta ao visualizador, independentemente de a resposta vir do cache do CloudFront ou da origem.
exemplo Exemplo
O pseudocódigo a seguir mostra a estrutura de uma função que modifica a resposta HTTP.
function handler(event) { var request = event.request; var response = event.response; // Modify the response object here, // using the request properties if needed. return response; }
A função retorna o objeto response modificado ao CloudFront, que o CloudFront retorna imediatamente ao visualizador.
Validar conexões mTLS em um tipo de evento de solicitação de conexão
As funções de conexão são um tipo de CloudFront Functions executadas durante conexões TLS para fornecer validação personalizada e lógica de autenticação. No momento, as funções de conexão estão disponíveis para conexões TLS mútuas (mTLS), nas quais você pode validar certificados de clientes e implementar uma lógica de autenticação personalizada além da validação padrão do certificado. As funções de conexão são executadas durante o processo de handshake do TLS e podem permitir ou negar conexões com base nas propriedades do certificado, no endereço IP do cliente ou em outros critérios.
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.
exemplo
O seguinte pseudocódigo mostra a estrutura de uma função de conexão:
function connectionHandler(connection) { // Validate certificate and connection properties here. if (/* validation passes */) { connection.allow(); } else { connection.deny(); } }
A função usa métodos auxiliares para determinar se a conexão deve ser permitida ou negada. Diferentemente das funções de solicitação de visualizador e resposta ao visualizador, as funções de conexão não podem modificar solicitações ou respostas HTTP.
Informações relacionadas
Para ter mais informações sobre como trabalhar com o CloudFront Functions, consulte os seguintes tópicos: