Restricciones de Lambda @Edge - Amazon CloudFront

Restricciones de Lambda @Edge

Las siguientes restricciones se aplican solo a Lambda @Edge.

Para obtener información sobre cuotas, consulte Cuotas de Lambda@Edge.

Resolución de los DNS

CloudFront realiza una resolución DNS en el nombre de dominio de origen antes de ejecutar la función de Lambda@Edge de solicitud de origen. Si el servicio DNS del dominio tiene problemas y CloudFront no puede resolver el nombre de dominio para obtener la dirección IP, la función de Lambda@Edge no se invocará. CloudFront devolverá un código de estado HTTP 502 (puerta de enlace incorrecta) al cliente. Para obtener más información, consulte Error de DNS (NonS3OriginDnsError).

Para obtener más información sobre la administración de la conmutación por error de DNS, consulte Configuring DNS failover en la Guía para desarrolladores de Amazon Route 53.

HTTP status codes

Las funciones de Lambda@Edge para eventos de respuesta de lector no pueden modificar el código de estado HTTP de la respuesta, independientemente de si la respuesta proviene del origen o de la caché de CloudFront.

Versión de función de Lambda

Debe usar una versión numerada de la función de Lambda, no $LATEST o alias.

Región de Lambda

La función de Lambda debe estar en la región EE. UU. Este (Norte de Virginia).

Permisos de rol de Lambda

El rol de la ejecución de IAM asociado a la función de Lambda debe permitir que lo asuman las entidades principales del servicio lambda.amazonaws.com y edgelambda.amazonaws.com. Para obtener más información, consulte Configuración de permisos y roles de IAM para Lambda@Edge.

Características de Lambda

Lambda @Edge no admite las siguientes características de Lambda:

Tiempos de ejecución admitidos

Lambda@Edge admite funciones Lambda con los siguientes tiempos de ejecución:

Node.js

Python

  • Node.js 20

  • Node.js 18

  • Node.js 16¹

  • Node.js 14²

  • Node.js 12²

  • Node.js 10²

  • Node.js 8²

  • Node.js 6²

  • Python 3.12

  • Python 3.11

  • Python 3.10

  • Python 3.9

  • Python 3.8

  • Python 3.7

¹Esta versión de Node.js ha llegado al final de su vida útil y pronto quedará obsoleta por AWS Lambda.

²Esta versión de Node.js ha llegado al final de su vida útil y es totalmente obsoleta por AWS Lambda.

No puede crear ni actualizar funciones con las versiones obsoletas de Node.js. Solo puede asociar las funciones existentes a estas versiones con las distribuciones de CloudFront. Las funciones con estas versiones que están asociadas a las distribuciones continúan ejecutándose. Sin embargo, le recomendamos que traslade la función a versiones más recientes de Node.js. Para obtener más información, consulte Política de obsolescencia del tiempo de ejecución en la Guía para desarrolladores de AWS Lambda y la programación de versiones de Node.js en GitHub.

sugerencia

Como práctica recomendada, utilice las últimas versiones de los tiempos de ejecución proporcionados para obtener mejoras en el rendimiento y nuevas características.

Encabezados CloudFront

Las funciones de Lambda@Edge pueden leer, editar, eliminar o agregar cualquiera de los siguientes encabezados de CloudFront enumerados en Añadido de encabezados de solicitudes de CloudFront.

Notas
  • Si desea que CloudFront agregue estos encabezados, debe configurar CloudFront para que los agregue mediante una política de caché o una política de solicitud de origen.

  • CloudFront agrega los encabezados después del evento de solicitud de lector, lo que significa que los encabezados no están disponibles para las funciones de Lambda @Edge en una solicitud de lector. Los encabezados solo están disponibles para las funciones de Lambda @Edge en una solicitud de origen y una respuesta de origen.

  • Si la solicitud de lector incluye encabezados que tienen estos nombres y configuró CloudFront para que agregue estos encabezados mediante una Política de caché o una Política de solicitud de origen, CloudFront sobrescribe los valores de los encabezados que estaban en la solicitud de lector. Las funciones orientadas al lector ven el valor del encabezado de la solicitud de lector, mientras que las funciones orientadas al origen ven el valor de encabezado que CloudFront agregó.

  • Si una función de solicitud de lector agrega el encabezado CloudFront-Viewer-Country, la solicitud no supera la validación de CloudFront y devuelve el código de estado HTTP 502 (puerta de enlace incorrecta) al lector.

Restricciones para el cuerpo de la solicitud con la opción Incluir cuerpo

Cuando elija la opción Incluir cuerpo para exponer el cuerpo de la solicitud a la función de Lambda@Edge, se aplican la siguiente información y los siguientes límites de tamaño para las partes del cuerpo que se exponen o reemplazan.

  • CloudFront siempre codifica con base64 el cuerpo de la solicitud antes de exponerlo a Lambda @Edge.

  • Si el cuerpo de la solicitud es grande, CloudFront lo limita antes de exponerlo a Lambda@Edge, del siguiente modo:

    • Para los eventos de solicitudes de lector, el cuerpo está limitado a 40 KB.

    • Para las solicitudes de origen, el cuerpo está limitado a 1 MB.

  • Si tiene acceso al cuerpo de la solicitud como de solo lectura, CloudFront devuelve el cuerpo completo de la solicitud original al origen.

  • Si la función de Lambda @Edge reemplaza el cuerpo de la solicitud, se aplican los siguientes límites de tamaño al cuerpo que devuelve la función:

    • Si la función Lambda @Edge devuelve el cuerpo como texto sin formato:

      • Para los eventos de solicitudes de lector, el límite del cuerpo es 40 KB.

      • Para los eventos de solicitudes de origen, el límite del cuerpo es 1 MB.

    • Si la función Lambda @Edge devuelve el cuerpo como texto codificado con base64:

      • Para los eventos de solicitudes de lector, el límite del cuerpo es 53,2 KB.

      • Para los eventos de solicitudes de origen, el límite del cuerpo es 1,33 MB.

nota

Si la función de Lambda@Edge devuelve un cuerpo que supera estos límites, la solicitud producirá un error con un código de estado HTTP 502 (Error de validación de Lambda). Le recomendamos que actualice la función Lambda@Edge para que el cuerpo no supere estos límites.

Tiempo de espera de respuesta y tiempo de espera de keep-alive (solo orígenes personalizados)

Si utiliza las funciones de Lambda@Edge para establecer el tiempo de espera de respuesta o el tiempo de espera de keep-alive para sus orígenes de distribución, compruebe que está especificando un valor que su origen pueda admitir. Para obtener más información, consulte Cuotas de tiempo de espera de respuesta y de keep-alive.