

# Restricciones de Lambda @Edge
<a name="lambda-at-edge-function-restrictions"></a>

Las siguientes restricciones se aplican solo a Lambda @Edge.

**Contents**
+ [Resolución de los DNS](#lambda-at-edge-restrictions-dns)
+ [HTTP status codes](#lambda-at-edge-restrictions-status-codes)
+ [Versión de función de Lambda](#lambda-at-edge-restrictions-version)
+ [Región de Lambda](#lambda-at-edge-restrictions-region)
+ [Permisos de rol de Lambda](#lambda-at-edge-restrictions-role-permissions)
+ [Características de Lambda](#lambda-at-edge-restrictions-features)
+ [Tiempos de ejecución admitidos](#lambda-at-edge-restrictions-runtime)
+ [Encabezados CloudFront](#lambda-at-edge-restrictions-cloudfront-headers)
+ [Restricciones para el cuerpo de la solicitud con la opción Incluir cuerpo](#lambda-at-edge-restrictions-request-body)
+ [Tiempo de espera de respuesta y tiempo de espera de keep-alive (solo orígenes personalizados)](#timeout-for-lambda-edge-functions)

Para obtener información sobre cuotas de , consulte [Cuotas de Lambda@Edge](cloudfront-limits.md#limits-lambda-at-edge).

## Resolución de los DNS
<a name="lambda-at-edge-restrictions-dns"></a>

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)](http-502-bad-gateway.md) al cliente. Para obtener más información, consulte [Error de DNS (`NonS3OriginDnsError`)](http-502-bad-gateway.md#http-502-dns-error).

Si la lógica de la función modifica el nombre de dominio de origen, CloudFront realizará otra resolución de DNS en el nombre de dominio actualizado después de que la función haya terminado de ejecutarse.

Para obtener más información sobre la administración de la conmutación por error de DNS, consulte [Configuring DNS failover](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring.html) en la *Guía para desarrolladores de Amazon Route 53*.

## HTTP status codes
<a name="lambda-at-edge-restrictions-status-codes"></a>

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
<a name="lambda-at-edge-restrictions-version"></a>

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

## Región de Lambda
<a name="lambda-at-edge-restrictions-region"></a>

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

## Permisos de rol de Lambda
<a name="lambda-at-edge-restrictions-role-permissions"></a>

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](lambda-edge-permissions.md).

## Características de Lambda
<a name="lambda-at-edge-restrictions-features"></a>

Lambda @Edge no admite las siguientes características de Lambda:
+ [Configuraciones de administración del tiempo de ejecución de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-controls) distintas de **Auto** (predeterminada)
+ Configuración de la función de Lambda para obtener acceso a recursos en la VPC
+ [Colas de mensajes fallidos de la función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#dlq)
+ [Variables de entorno de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) (excepto las variables de entorno reservadas, que se admiten automáticamente)
+ Lambda funciona con [Administración de dependencias de AWS Lambda con capas](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html)
+ [Uso de AWS X-Ray](https://docs.aws.amazon.com/lambda/latest/dg/lambda-x-ray.html)
+ Simultaneidad aprovisionada de Lambda
**nota**  
Las funciones de Lambda@Edge comparten las mismas capacidades de [simultaneidad regional](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) que todas las funciones de Lambda. Para obtener más información, consulte [Cuotas de Lambda@Edge](cloudfront-limits.md#limits-lambda-at-edge).
+ [Creación de una función de Lambda con una imagen de contenedor](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html)
+ [Funciones de Lambda que utilizan la arquitectura arm](https://docs.aws.amazon.com/lambda/latest/dg/foundation-arch.html)
+ Funciones de Lambda con más de 512 MB de almacenamiento efímero
+ Uso de una [clave administrada por el cliente para cifrar los paquetes de implementación .zip](https://docs.aws.amazon.com/lambda/latest/dg/encrypt-zip-package.html)

## Tiempos de ejecución admitidos
<a name="lambda-at-edge-restrictions-runtime"></a>

Lambda@Edge admite las versiones más recientes de los tiempos de ejecución de Node.js y Python. Para obtener una lista de las versiones compatibles y sus futuras fechas de obsolescencia, consulte [Tiempos de ejecución compatibles](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtimes-supported) en la *Guía para desarrolladores de AWS Lambda*.

**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.
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](https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html) en la *Guía para desarrolladores de AWS Lambda* y la [programación de versiones de Node.js](https://github.com/nodejs/Release#release-schedule) en GitHub.

## Encabezados CloudFront
<a name="lambda-at-edge-restrictions-cloudfront-headers"></a>

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](adding-cloudfront-headers.md).

**Notas**  
Si desea que CloudFront agregue estos encabezados, debe configurar CloudFront para que los agregue mediante una [política de caché](controlling-the-cache-key.md) o una [política de solicitud de origen](controlling-origin-requests.md).
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é](controlling-the-cache-key.md) o una [Política de solicitud de origen](controlling-origin-requests.md), 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
<a name="lambda-at-edge-restrictions-request-body"></a>

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](http-502-bad-gateway.md#http-502-lambda-validation-error)). 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)
<a name="timeout-for-lambda-edge-functions"></a>

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](DownloadDistValuesOrigin.md#response-keep-alive-timeout-quota).