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 uma função que modifica a solicitação 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 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.
Informações relacionadas
Para ter mais informações sobre como trabalhar com o CloudFront Functions, consulte os seguintes tópicos: