

# Creación de funciones
<a name="create-function"></a>

La función se crea en dos etapas: 

1. Crear el código de función como JavaScript. Puede utilizar el ejemplo predeterminado de la consola de CloudFront o escribir el suyo propio. Para obtener más información, consulte los temas siguientes:
   + [Escritura de código de función](writing-function-code.md)
   + [Estructura de eventos de CloudFront Functions](functions-event-structure.md)
   + [Ejemplos de CloudFront Functions para CloudFront](service_code_examples_cloudfront_functions_examples.md)

1. Utilice CloudFront para crear la función e incluir el código. El código existe dentro de la función (no como referencia).

------
#### [ Console ]

**Para crear una función**

1. Inicie sesión en la consola de CloudFront en [https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions) y elija la página **Funciones**.

1. Seleccione **Creación de función**.

1. Introduzca un nombre de función que sea único en la Cuenta de AWS, elija la versión de Java Script y, a continuación, elija **Continuar**. Aparece la página de detalles de la nueva función.
**nota**  
Para utilizar [pares clave-valor](kvs-with-functions.md) en la función, debe elegir tiempo de ejecución 2.0 de Java Script.

1. En la sección **Código de función**, seleccione la pestaña **Compilación** e introduzca el código de función. El código de ejemplo que se incluye en la pestaña **Compilación** ilustra la sintaxis básica del código de la función.

1. Elija **Guardar cambios**.

1. Si el código de la función utiliza pares clave-valor, debe asociar un almacén de clave-valor. 

   Puede asociar el almacén de clave-valor cuando crea en primer lugar la función. O bien, puede asociarlo más adelante, [actualizando la función](update-function.md). 

   Para asociar un almacén clave-valor ahora, siga estos pasos:
   + Vaya a la sección **Asociar KeyValueStore** y elija **Asociar KeyValueStore existente**.
   + Seleccione el almacén de clave-valor que contiene los pares clave-valor de la función y, a continuación, elija **Asociar KeyValueStore**.

   CloudFront asocia inmediatamente el almacén a la función. No necesita guardar la función.

------
#### [ CLI ]

Si utiliza la CLI, normalmente crea primero el código de la función en un archivo y, a continuación, crea la función con la AWS CLI.

**Para crear una función**

1. Cree el código de la función en un archivo y guárdelo en un directorio al que se pueda conectar el equipo. 

1. Ejecute el comando como se muestra en el ejemplo. En este ejemplo, se utiliza la notación `fileb://` para transmitir el archivo. También incluye saltos de línea para que el comando sea más legible. 

   ```
   aws cloudfront create-function \
       --name MaxAge \
       --function-config '{"Comment":"Max Age 2 years","Runtime":"cloudfront-js-2.0","KeyValueStoreAssociations":{"Quantity":1,"Items":[{"KeyValueStoreARN":"arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"}]}}' \
       --function-code fileb://function-max-age-v1.js
   ```
**Notas**  
`Runtime`: la versión de Java Script. Para utilizar [pares clave-valor](kvs-with-functions.md) en la función, debe especificar la versión 2.0.
`KeyValueStoreAssociations`: si la función usa pares clave-valor, puede asociar el almacén de clave-valor en la creación inicial de la función. O bien, puede asociarlo más adelante, utilizando `update-function`. La `Quantity` siempre es `1`, porque cada función solo puede tener asociado un almacén de clave-valor.

   Si el comando se ejecuta correctamente, verá un resultado parecido al siguiente.

   ```
   ETag: ETVABCEXAMPLE
   FunctionSummary:
     FunctionConfig:
       Comment: Max Age 2 years
       Runtime: cloudfront-js-2.0
       KeyValueStoreAssociations= \
         {Quantity=1, \
         Items=[{KeyValueStoreARN='arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111'}]} \
     FunctionMetadata:
       CreatedTime: '2021-04-18T20:38:56.915000+00:00'
       FunctionARN: arn:aws:cloudfront::111122223333:function/MaxAge
       LastModifiedTime: '2023-11-19T20:38:56.915000+00:00'
       Stage: DEVELOPMENT
     Name: MaxAge
     Status: UNPUBLISHED
   Location: https://cloudfront.amazonaws.com/2020-05-31/function/arn:aws:cloudfront:::function/MaxAge
   ```

   La mayor parte de la información se repite desde la solicitud. CloudFront agrega el resto de información.
**Notas**  
`ETag`: este valor cambia cada vez que se modifica el almacén de clave-valor. Utilice este valor y el nombre de la función para hacer referencia a la función en el futuro. Asegúrese de utilizar siempre la `ETag` actual.
`FunctionARN`: el ARN de la función CloudFront.
111122223333: la Cuenta de AWS.
`Stage`: la fase de la función (`LIVE` o `DEVELOPMENT`). 
`Status`: el estado de la función (`PUBLISHED` o `UNPUBLISHED`).

------

Después de crear la función, se agrega a la fase `DEVELOPMENT`. Le recomendamos que [pruebe la función](test-function.md) antes de [publicarla](publish-function.md). Tras publicar la función, la función cambia a la fase `LIVE`.