

# Actualización de funciones
<a name="update-function"></a>

Puede actualizar una función en cualquier momento. Los cambios se realizan únicamente en la versión de la función que se encuentra en la etapa `DEVELOPMENT`. Para copiar los cambios de la etapa `DEVELOPMENT` a `LIVE`, debe [publicar la función](publish-function.md). 

Puede actualizar el código de una función en la consola de CloudFront o con la AWS Command Line Interface (AWS CLI).

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

**Actualización del código de la 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**.

   Elija la función que desea actualizar.

1. Elija **Editar** y realice los siguientes cambios:
   + Actualice todos los campos de la sección **Detalles**.
   + Cambie o elimine el almacén de clave-valor asociado. Para obtener más información sobre los almacenes de clave-valor, consulte [Amazon CloudFront KeyValueStore](kvs-with-functions.md).
   + Cambie el código de la función. Seleccione la pestaña **Compilación**, realice los cambios y, a continuación, seleccione **Guardar cambios** para guardar los cambios en el código.

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

**Para actualizar el código de la función**

1. Abra una ventana de línea de comandos.

1. Ejecute el siguiente comando.

   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 update-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 \
       --if-match ETVABCEXAMPLE
   ```
**Notas**  
Puede identificar la función por su nombre y ETag (en el parámetro `if-match`). Asegúrese de utilizar siempre la ETag actual. Puede obtener este valor de la operación de la API [DescribeFunction](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DescribeFunction.html).
Debe incluir el `function-code`, incluso aunque no desee cambiarlo.
Tenga cuidado con la `function-config`. Debe transmitir todo lo que quiera conservar en la configuración. En concreto, gestione el almacén de clave-valor de la siguiente manera:   
Para retener la asociación de almacenes de clave-valor existentes (si existen), especifique el nombre del almacén *existente*.
Para cambiar la asociación, especifique el nombre del *nuevo* almacén de clave-valor.
Para eliminar la asociación, omita el parámetro `KeyValueStoreAssociations`. 

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

   ```
   ETag: ETVXYZEXAMPLE
   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-12-19T23:41:15.389000+00:00' \
       Stage: DEVELOPMENT \
     Name: MaxAge \
     Status: UNPUBLISHED
   ```

------

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.
`FunctionARN`: el ARN de la función CloudFront.
`Stage`: la fase de la función (`LIVE` o `DEVELOPMENT`). 
`Status`: el estado de la función (`PUBLISHED` o `UNPUBLISHED`).