Determinación del propósito de la función
Antes de escribir el código de su función, determine su propósito. La mayoría de las funciones de CloudFront Functions cumplen uno de los siguientes propósitos.
Temas
Independientemente del propósito de la función, el handler
es el punto de entrada para cualquier función. Toma un solo argumento llamado event
, que se pasa a la función mediante CloudFront. El event
es un objeto JSON que contiene una representación de la solicitud HTTP (y la respuesta, si su función modifica la respuesta HTTP).
Modificar la solicitud HTTP en un tipo de evento de solicitud de lector
Su función puede modificar la solicitud HTTP que CloudFront recibe del lector (cliente) y devolver la solicitud modificada a CloudFront para su procesamiento continuo. Por ejemplo, el código de función podría normalizar la clave de caché o modificar los encabezados de solicitud.
Cuando crea una función que modifica la solicitud HTTP, asegúrese de elegir el tipo de evento solicitud del lector. Esto significa que la función se ejecuta cada vez que CloudFront recibe una solicitud de un lector, antes de comprobar si el objeto solicitado está en la caché de CloudFront.
ejemplo Ejemplo
El siguiente pseudocódigo muestra la estructura de una función que modifica la solicitud HTTP.
function handler(event) { var request = event.request; // Modify the request object here. return request; }
La función devuelve el objeto modificado request
a CloudFront. CloudFront continúa procesando la solicitud devuelta comprobando la caché de CloudFront en busca de un acierto de caché y enviando la solicitud al origen si es necesario.
Generar una respuesta HTTP en un tipo de evento de solicitud de lector
Su función puede generar una respuesta HTTP en el borde y devolverla directamente al lector (cliente) sin buscar una respuesta almacenada en la caché o cualquier otro procesamiento por parte de CloudFront. Por ejemplo, el código de función podría redirigir la solicitud a una nueva URL, o comprobar la autorización y devolver una respuesta 401
o 403
a solicitudes no autorizadas.
Cuando crea una función que genera una respuesta HTTP, asegúrese de elegir el tipo de evento viewer request (solicitud del lector). Esto significa que la función se ejecuta cada vez que CloudFront recibe una solicitud de un lector, antes de que CloudFront siga procesando la solicitud.
ejemplo Ejemplo
El siguiente pseudocódigo muestra la estructura de una función que genera una respuesta HTTP.
function handler(event) { var request = event.request; var response = ...; // Create the response object here, // using the request properties if needed. return response; }
La función devuelve un objeto response
a CloudFront, que CloudFront devuelve inmediatamente al lector sin comprobar la caché de CloudFront ni enviar una solicitud al origen.
Modificar la respuesta HTTP en un tipo de evento de respuesta de lector
Su función puede modificar la respuesta HTTP antes de que CloudFront la envíe al lector (cliente), independientemente de si la respuesta proviene de la caché de CloudFront o del origen. Por ejemplo, es posible que el código de función agregue o modifique encabezados de respuesta, códigos de estado y contenido del cuerpo.
Cuando crea una función que modifica la respuesta HTTP, asegúrese de elegir el tipo de evento viewer response (respuesta al lector). Esto significa que la función se ejecuta antes de que CloudFront devuelva una respuesta al lector, independientemente de si la respuesta proviene de la caché de CloudFront o del origen.
ejemplo Ejemplo
El siguiente pseudocódigo muestra la estructura de una función que modifica la respuesta 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; }
La función devuelve el objeto response
modificado a CloudFront, que CloudFront devuelve inmediatamente al lector.
Información relacionada
Para obtener más información sobre cómo trabajar con CloudFront Functions, consulte los siguientes: