

# Restricciones en todas las funciones de borde
<a name="edge-function-restrictions-all"></a>

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

**Topics**
+ [Propiedad de Cuenta de AWS](#function-restrictions-account-ownership)
+ [Combinación de funciones de CloudFront con Lambda @Edge](#function-restrictions-combining-functions)
+ [HTTP status codes](#function-restrictions-status-codes)
+ [Encabezados HTTP](#function-restrictions-headers)
+ [Cadenas de consulta](#function-restrictions-query-strings)
+ [URI](#function-restrictions-uri)
+ [Codificación de URI, cadena de consulta y encabezados](#function-restrictions-encoding)
+ [Microsoft Smooth Streaming](#function-restrictions-microsoft-smooth-streaming)
+ [Etiquetado](#function-restrictions-tagging)

## Propiedad de Cuenta de AWS
<a name="function-restrictions-account-ownership"></a>

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

## Combinación de funciones de CloudFront con Lambda @Edge
<a name="function-restrictions-combining-functions"></a>

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.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonCloudFront/latest/DeveloperGuide/edge-function-restrictions-all.html)

## HTTP status codes
<a name="function-restrictions-status-codes"></a>

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](lambda-generating-http-responses.md#lambda-updating-http-responses).

## Encabezados HTTP
<a name="function-restrictions-headers"></a>

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, modificarlos ni eliminarlos.

**Topics**
+ [Encabezados no permitidos](#function-restrictions-disallowed-headers)
+ [Encabezados de solo lectura](#function-restrictions-read-only-headers)

### Encabezados no permitidos
<a name="function-restrictions-disallowed-headers"></a>

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
<a name="function-restrictions-read-only-headers"></a>

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
<a name="function-restrictions-read-only-headers-viewer-request"></a>

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)
<a name="function-restrictions-read-only-headers-origin-request"></a>

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)
<a name="function-restrictions-read-only-headers-origin-response"></a>

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
<a name="function-restrictions-read-only-headers-viewer-response"></a>

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
<a name="function-restrictions-query-strings"></a>

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 en**All (Todos)**: para**Cadenas 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 URI, cadena de consulta y encabezados](#function-restrictions-encoding).

## URI
<a name="function-restrictions-uri"></a>

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 8192 caracteres.

## Codificación de URI, cadena de consulta y encabezados
<a name="function-restrictions-encoding"></a>

Los valores de URI, cadena de consulta y encabezados que se pasan a funciones periféricas tienen la codificación UTF-8. La función debe usar la codificación UTF-8 para los valores de URI, cadena de consulta y encabezado 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 del URI, la cadena de consulta y los encabezados:
+ 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](https://en.wikipedia.org/wiki/ISO/IEC_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 del URI, la cadena de consulta y los encabezados que CloudFront reenvía al origen dependen de si una función cambia los valores:
+ Si una función no cambia el URI, la cadena de consulta o el encabezado, CloudFront reenvía los valores que recibió en la solicitud al origen.
+ Si la función cambia el URI, la cadena de consulta o el encabezado, CloudFront reenvía los valores con codificación UTF-8.

## Microsoft Smooth Streaming
<a name="function-restrictions-microsoft-smooth-streaming"></a>

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

## Etiquetado
<a name="function-restrictions-tagging"></a>

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](tagging.md).