Restricciones en todas las funciones de borde - Amazon CloudFront

Restricciones en todas las funciones de borde

Las siguientes restricciones se aplican a todas las funciones periféricas, tanto de CloudFront Functions como de Lambda @Edge.

Propiedad de Cuenta de AWS

Para asociar una función de borde con una distribución de CloudFront, la función y la distribución deben pertenecer al mismo propietarioCuenta de AWS.

Combinación de funciones de CloudFront con Lambda @Edge

Para un determinado comportamiento de caché, se aplican las siguientes restricciones:

  • Cada tipo de evento (solicitud de lector, solicitud de origen, respuesta de origen y respuesta de lector) solo puede tener una asociación de función de borde.

  • No se puede combinar CloudFront Functions y Lambda @Edge en eventos de lector (solicitud y respuesta).

Todas las demás combinaciones de funciones de borde están permitidas. En la tabla siguiente se explican las combinaciones permitidas.

CloudFront Functions

Solicitud del lector

Respuesta del lector

Lambda@Edge

Solicitud del lector

No permitido

No permitido

Solicitud del origen

Permitido

Permitido

Respuesta del origen

Permitido

Permitido

Respuesta del lector

No permitido

No permitido

HTTP status codes

CloudFront no invoca funciones periféricas para eventos de respuesta al lector si el origen devuelve el código de estado HTTP 400 o un número superior.

Las funciones de Lambda @Edge para eventos de respuesta de origen se invocan para All (Todos), incluso si el origen devuelve el código de estado HTTP 400 o un número superior. Para obtener más información, consulte Actualización de respuestas HTTP en desencadenadores de respuesta de origen.

Encabezados HTTP

Determinados encabezados HTTP no están permitidos, lo que significa que no están expuestos a funciones perimetrales y las funciones no pueden agregarlos. Otros encabezados son de solo lectura, lo que significa que las funciones pueden leerlos pero no pueden agregarlos ni modificarlos.

Encabezados no permitidos

Los siguientes encabezados HTTP no están expuestos a funciones perimetrales y las funciones no pueden agregarlos. Si su función agrega uno de estos encabezados, no supera la validación de CloudFront y CloudFront devuelve el código de estado HTTP 502 (Gateway incorrecta) al lector.

  • Connection

  • Expect

  • Keep-Alive

  • Proxy-Authenticate

  • Proxy-Authorization

  • Proxy-Connection

  • Trailer

  • Upgrade

  • X-Accel-Buffering

  • X-Accel-Charset

  • X-Accel-Limit-Rate

  • X-Accel-Redirect

  • X-Amz-Cf-*

  • X-Amzn-Auth

  • X-Amzn-Cf-Billing

  • X-Amzn-Cf-Id

  • X-Amzn-Cf-Xff

  • X-Amzn-Errortype

  • X-Amzn-Fle-Profile

  • X-Amzn-Header-Count

  • X-Amzn-Header-Order

  • X-Amzn-Lambda-Integration-Tag

  • X-Amzn-RequestId

  • X-Cache

  • X-Edge-*

  • X-Forwarded-Proto

  • X-Real-IP

Encabezados de solo lectura

Los siguientes encabezados son de solo lectura. La función puede leerlos y utilizarlos como entrada para la lógica de la función, pero no puede cambiar los valores. Si su función añade o edita un encabezado de solo lectura, la solicitud no supera la validación de CloudFront y CloudFront devuelve el código de estado HTTP 502 (Gateway incorrecta) al lector.

Encabezados de solo lectura en eventos de solicitud de lector

Los siguientes encabezados son de solo lectura en los eventos de solicitud de lector.

  • Content-Length

  • Host

  • Transfer-Encoding

  • Via

Encabezados de solo lectura en eventos de solicitud de origen (solo Lambda @Edge)

Los siguientes encabezados son de solo lectura en eventos de solicitud de origen, que solo existen en Lambda @Edge.

  • Accept-Encoding

  • Content-Length

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Transfer-Encoding

  • Via

Encabezados de solo lectura en eventos de respuesta de origen (solo Lambda @Edge)

Los siguientes encabezados son de solo lectura en eventos de respuesta de origen, que solo existen en Lambda @Edge.

  • Transfer-Encoding

  • Via

Encabezados de solo lectura en eventos de respuesta de lector

Los siguientes encabezados son de solo lectura en eventos de respuesta de lector para CloudFront Functions y Lambda@Edge.

  • Warning

  • Via

Los siguientes encabezados son de solo lectura en los eventos de respuesta de lector para Lambda@Edge.

  • Content-Length

  • Content-Encoding

  • Transfer-Encoding

Cadenas de consulta

Las siguientes restricciones se aplican a las funciones que leen, actualizan o crean una cadena de consulta en un URI de solicitud.

  • (Solo Lambda @Edge) Para acceder a la cadena de consulta en una solicitud de origen o función de respuesta de origen, la política de caché o la política de solicitud de origen debe establecerse enAll (Todos): paraCadenas de consulta.

  • Una función puede crear o actualizar una cadena de consulta para eventos de solicitud de lector y solicitud de origen (los eventos de solicitud de origen solo existen en Lambda @Edge).

  • Una función puede leer una cadena de consulta, pero no puede crear o actualizar una, para eventos de respuesta de origen y respuesta de lector (los eventos de respuesta de origen solo existen en Lambda @Edge).

  • Las siguientes restricciones se aplica si una función crea o actualiza una cadena de consulta:

    • La cadena de consulta no puede incluir espacios, caracteres de control ni el identificador de fragmento (#).

    • El tamaño total del URI () y la cadena de consulta () debe ser inferior a 8 192 caracteres.

    • Le recomendamos que utilice la codificación de porcentaje para el URI y la cadena de consulta. Para obtener más información, consulte Codificación de los URI y las cadenas de consulta.

URI

Si una función cambia la URI de una solicitud, eso no cambia el comportamiento de la caché frente a la solicitud ni el origen al que se reenvía la solicitud.

El tamaño total del URI () y la cadena de consulta () debe ser inferior a 8 192 caracteres.

Codificación de los URI y las cadenas de consulta

Los valores de URI y de cadena de consulta que se pasan a las funciones de borde tienen la codificación UTF-8. Su función debe usar la codificación UTF-8 para el URI y los valores de cadena de consulta que devuelve. La codificación de porcentaje es compatible con la codificación UTF-8.

La siguiente lista explica cómo CloudFront maneja la codificación URI y el valor de cadena de consulta:

  • Cuando los valores de la solicitud tienen la codificación UTF-8, CloudFront reenvía los valores a la función de sin cambiarlos.

  • Cuando los valores en la solicitud tienen codificación de caracteres ISO 8859-1, CloudFront convierte los valores a la codificación UTF-8 antes de reenviarlos a su función.

  • Si los valores en la solicitud están codificados mediante alguna otra codificación de caracteres, CloudFront supone que tienen la codificación ISO-8859-1 e intenta convertir esa codificación de ISO-8859-1 a UTF-8.

    importante

    Los caracteres convertidos podrían ser una interpretación inexacta de los valores de la solicitud original. Esto podría hacer que su función o su origen produzcan un resultado no deseado.

Los valores de URI y la cadena de consulta que CloudFront reenvía a su origen dependen de si una función cambia los valores:

  • Si las funciones no cambian el URI o la cadena de consulta, CloudFront reenvía los valores que recibió en la solicitud a su origen.

  • Si la función cambia el URI o la cadena de consulta, CloudFront reenvía los valores con codificación UTF-8.

Microsoft Smooth Streaming

No se pueden utilizar funciones perimetrales con una distribución de CloudFront que esté utilizando para streaming de archivos multimedia que haya transcodificado en formato Microsoft Smooth Streaming.

Etiquetado

No se pueden agregar etiquetas a funciones periféricas. Para obtener más información sobre el etiquetado en CloudFront, consulte Etiquetado de una distribución.