

# Escritura y creación de una función de Lambda@Edge
<a name="lambda-edge-create-function"></a>

Para usar Lambda@Edge, debe *escribir* el código de la función de AWS Lambda. Para ayudarle a escribir funciones de Lambda@Edge, consulte los siguientes recursos:
+  [Estructura de eventos de Lambda@Edge](lambda-event-structure.md): comprensión de la estructura de eventos que se va a utilizar con Lambda@Edge.
+ [Funciones de ejemplo de Lambda@Edge](lambda-examples.md): funciones de ejemplo, como pruebas A/B y generación de un redireccionamiento HTTP.

El modelo de programación para utilizar Node.js o Python con Lambda@Edge es el mismo que para utilizar Lambda en una Región de AWS. Para obtener más información, consulte [Creación de funciones de Lambda con Node.js](https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html) o [Creación de funciones de Lambda con Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html) en la *Guía del desarrollador de AWS Lambda*.

En su función de Lambda@Edge, incluya el parámetro `callback` y devuelva el objeto correspondiente para eventos de solicitud o de respuesta:
+ **Eventos de solicitud**: incluya el objeto `cf.request` en la respuesta.

  Si está generando una respuesta, incluya el objeto `cf.response` en ella. Para obtener más información, consulte [Generación de respuestas HTTP en los desencadenadores de solicitud](lambda-generating-http-responses.md#lambda-generating-http-responses-in-requests). 
+ **Eventos de respuesta**: incluya el objeto `cf.response` en la respuesta.

Tras escribir su propio código o utilizar uno de los ejemplos, cree la función en Lambda. Para crear una función o editar una ya existente, consulte los temas siguientes:

**Topics**
+ [Creación de una función de Lambda@Edge](lambda-edge-create-in-lambda-console.md)
+ [Edición de una función de Lambda](lambda-edge-edit-function.md)

 Después de crear la función en Lambda, se configura Lambda para ejecutar la función según los eventos de CloudFront específicos, que se denominan *desencadenadores*. Para obtener más información, consulte [Adición de desencadenadores para una función de Lambda@Edge](lambda-edge-add-triggers.md).

# Creación de una función de Lambda@Edge
<a name="lambda-edge-create-in-lambda-console"></a>

Para configurar AWS Lambda para que ejecute funciones Lambda basadas en eventos de CloudFront, siga este procedimiento.<a name="lambda-edge-create-function-procedure"></a>

**Para crear una función de Lambda@Edge**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Lambda en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Si ya tiene una o varias funciones de Lambda, elija **Create function (Crear función)**.

   Si no tiene ninguna función, elija **Get Started Now (Comenzar ahora)**.

1. En la lista Región de la parte superior de la página, elija **US East (N. Virginia) (EE. UU. Este (Norte de Virginia))**.

1. Cree una función mediante su propio código o cree una función a partir de un proyecto de CloudFront.
   + Para crear una función utilizando su propio código, elija **Author from scratch (Crear desde cero)**. 
   + Para mostrar una lista de esquemas de CloudFront, ingrese **cloudfront** en el campo de filtro y, a continuación, elija **Intro**.

     Si encuentra un proyecto que desee utilizar, elija el nombre del proyecto.

1. En la sección **Basic information (Información básica)**, especifique los siguientes valores:

   1. **Nombre**: escriba un nombre para la función.

   1. **Rol**: para empezar rápidamente, seleccione **Crear un rol nuevo desde las plantillas**. También puede seleccionar **Elegir un rol existente** o **Crear un rol personalizado** y, a continuación, seguir las indicaciones para completar la información de esta sección.

   1. **Nombre del rol**: escriba un nombre para el rol.

   1. **Plantillas de políticas**: elija **Permisos básicos de Edge Lambda**.

1. Si eligió **Author from scratch (Crear desde cero)** en el paso 4, vaya al paso 7.

   Si eligió un proyecto en el paso 4, la sección **cloudfront** le permite crear un desencadenador, que asocia esta función con una memoria caché en una distribución de CloudFront y un evento de CloudFront. Le recomendamos que elija **Remove (Eliminar)** en este punto, por lo que no habrá un disparador para la función cuando esta se cree. Podrá añadir disparadores más adelante. 
**sugerencia**  
Le recomendamos que pruebe y depure la función antes de agregar desencadenadores. Si agrega un desencadenador ahora, la función se ejecutará en cuanto la cree y terminará de replicarse en las ubicaciones de AWS en todo el mundo; además, se implementará la distribución correspondiente.

1. Elija **Create function (Crear función)**.

   Lambda crea dos versiones de su función: \$1LATEST y Version 1. Solo puede editar la versión \$1LATEST, pero la consola muestra inicialmente Version 1.

1. Para editar la función, elija **Version 1 (Versión 1)** cerca de la parte superior de la página, bajo el ARN de la función. A continuación, en la pestaña **Versions (Versiones)**, elija **\$1LATEST**. (Si abandona la función y vuelve a ella más tarde, el botón de etiqueta será **Qualifiers (Cualificadores)**).

1. En la pestaña **Configuration (Configuración)**, elija el valor correspondiente para **Code entry type (Tipo de entrada de código)**. A continuación, siga las instrucciones para editar o cargar el código.

1. En **Runtime (Tiempo de ejecución)**, elija el valor según el código de la función.

1. En la sección **Tags (Etiquetas)**, añada todas las etiquetas aplicables.

1. Elija **Actions (Acciones)** y, a continuación, **Publish new version (Publicar nueva versión)**.

1. Ingrese una descripción para la nueva versión de la función.

1. Elija **Publish**.

1. Pruebe y depure la función. Para obtener más información sobre las pruebas en la consola de Lambda, consulte [Invocar una función de Lambda con la consola](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#get-started-invoke-manually) en la *Guía para desarrolladores de AWS Lambda*.

1. Cuando esté listo para que la función se ejecute para eventos de CloudFront, publique otra versión y edite la función para agregar desencadenadores. Para obtener más información, consulte [Adición de desencadenadores para una función de Lambda@Edge](lambda-edge-add-triggers.md).

# Edición de una función de Lambda
<a name="lambda-edge-edit-function"></a>

Después de crear una función de Lambda@Edge, puede utilizar la consola de Lambda para editarla.

**Notas**  
La versión original se denomina \$1LATEST.
Solo puede editar la versión \$1LATEST.
Cada vez que edite la versión \$1LATEST, debe publicar una nueva versión numerada.
No puede crear disparadores para \$1LATEST.
Cuando se publica una nueva versión de una función, Lambda no copia automáticamente los desencadenadores de la versión anterior a la nueva. Debe reproducir los disparadores para la nueva versión. 
Cuando se agrega un desencadenador para un evento de CloudFront a una función, si ya existe un desencadenador para la misma distribución, comportamiento de la caché y evento para una versión anterior de la misma función, Lambda lo elimina de esta versión anterior.
Después de realizar actualizaciones a una distribución de CloudFront, como agregar desencadenadores, debe esperar que los cambios se propaguen a ubicaciones de borde antes de que las funciones que ha especificado en los desencadenadores funcionen.<a name="lambda-edge-edit-function-procedure"></a>

**Para editar una función de Lambda**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Lambda en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. En la lista Región de la parte superior de la página, elija **US East (N. Virginia) (EE. UU. Este (Norte de Virginia))**.

1. En la lista de funciones, elija el nombre de la función.

   De forma predeterminada, la consola muestra la versión \$1LATEST. Puede ver las versiones anteriores (elija **Qualifiers (Cualificadores)**), pero solo puede editar \$1LATEST.

1. En la pestaña **Code (Código)**, en **Code entry type (Tipo de entrada de código)**, elija si desea editar el código en el navegador, cargar un archivo .zip o cargar un archivo desde Amazon S3.

1. Elija **Save (Guardar)** o **Save and test (Guardar y probar)**.

1. Elija **Actions (Acciones)** y, a continuación, **Publish new version (Publicar nueva versión)**. 

1. En el cuadro de diálogo **Publish new version from \$1LATEST (Publicar una nueva versión desde \$1LATEST)**, introduzca una descripción de la nueva versión. Esta descripción aparece en la lista de versiones, junto con un número de versión generado de forma automática. 

1. Elija **Publish**.

   La nueva versión se convierte automáticamente la versión más reciente. El número de versión aparece en **Versión** en la esquina superior izquierda de la página.
**nota**  
Si no ha agregado aún desencadenadores para la función, consulte [Adición de desencadenadores para una función de Lambda@Edge](lambda-edge-add-triggers.md). 

1. Elija la pestaña **Desencadenadores**.

1. Elija **Add trigger (Añadir disparador)**.

1. En el cuadro de diálogo **Add trigger (Agregar desencadenador)**, elija el cuadro con puntos y, a continuación, **CloudFront**.
**nota**  
Si ya ha creado uno o varios desencadenadores para una función, CloudFront es el servicio predeterminado.

1. Especifique los siguientes valores para indicar cuándo desea que se ejecute la función de Lambda.

   1. **ID de distribución**: elija el ID de la distribución donde desea añadir el desencadenador.

   1. **Comportamiento de caché**: elija el comportamiento de la caché que especifica los objetos en los que desea ejecutar la función.

   1. **Evento de CloudFront**: elija el evento de CloudFront que provoca la ejecución de la función.

   1. **Activar desencadenador y replicar**: seleccione esta casilla para que Lambda replique la función en las Regiones de AWS en todo el mundo.

1. Elija **Submit**.

1. Para añadir más disparadores para esta función, repita los pasos del 10 al 13.

Para obtener más información sobre las pruebas y la depuración de la función en la consola de Lambda, consulte [Invocar una función de Lambda con la consola](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#get-started-invoke-manually) en la *Guía para desarrolladores de AWS Lambda*.

Cuando esté listo para que la función se ejecute para eventos de CloudFront, publique otra versión y edite la función para agregar desencadenadores. Para obtener más información, consulte [Adición de desencadenadores para una función de Lambda@Edge](lambda-edge-add-triggers.md).