Determinar o propósito da função - Amazon CloudFront

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.

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.

Para ter mais informações sobre como trabalhar com o CloudFront Functions, consulte os seguintes tópicos: